0
votes

Azure Logic App ne peut pas obtenir Rowid de SQL Server

J'ai un logicApp Azure qui se connecte à une base de données SQL Server à Azure. La table dispose d'un colonne "/ code> comme clé primaire. Dans l'application logique, la suppression ou la mise à jour nécessite le Rowid pour effectuer la mise à jour, la touche principale ne fonctionne pas ici et jette une erreur lors de l'exécution, indiquant que la table n'a pas de clé primaire. Cela le fait et est également confirmé lors de l'insertion de la ligne deux fois dans le logicApp, il connaît la contrainte de la clé primaire, étant unique.

Si i Obtenez des lignes et filtrez par la colonne de la clé principale, la matrice résultante répertorie chaque élément trouvé (celui évidemment) mais ne met pas à disposition le Rowid comme une expression dynamique.

Comment est-il un pour obtenir le Rowid? Est-il possible de mettre à jour une ligne en utilisant uniquement la clé primaire?

mise à jour:

Le uuid est généré en dehors du logicApp et est transmis à elle comme une chaîne. Il convient de noter que l'insertion d'insertion fonctionne tout simplement bien.

Ici, le logicApp nécessite un spécificateur Rowid, mais en utilisant le uuid échoue. Je pensais que je pouvais alors chercher toutes les lignes filtrées par UUID et les mettre à jour, comme un travail autour, mais je ne pouvais pas obtenir le Rowid . Une autre personne a eu un problème similaire ( https://stackoverflow.com/a/43516709/1298523 ) et n'a pas pu obtenir le rowid sans modifier le code source; Toutefois, cette méthode d'ajout du railid dans la section du corps du code ne semble plus fonctionner car le résultat est vide. Entrez la description de l'image ici L'erreur LogicApp que je reçois lors d'une update ou Supprimer Lorsque vous utilisez l'UUID, c'est:

{ "Statut": 400, "Message": "Échec de l'exécution \ R \ N Intérieur Exception: Le tableau spécifié n'a pas de clé primaire. Les opérations de mise à jour et de suppression ne sont pas prises en charge. \ r \ nClientRequestid: 555", "Source": "sql-555.p.azurewebsites.net" }

avec qui dit l'insert va bien et que le uuid je passe est placé dans la table.

Insert Résultat: Entrez la description de l'image ici


3 commentaires

Mettez une valeur par défaut de NewID () sur la colonne uniqueIdentifier.


Veuillez poster le code et le message d'erreur. Votre explication n'est pas assez spécifique.


@ Nick.mcdermaid j'ai mis à jour ma question, espérons que c'est plus précis merci


3 Réponses :


0
votes

Si vous avez une colonne par défaut (comme NeufID ()) sur la clé principale, supprimez-la.

Générez le caractère unique directement dans votre application logique et simplement l'insérer comme une autre colonne dans la table dans Azure SQL DB. Si vous le faites, vous avez déjà la valeur GUID que vous pouvez ensuite utiliser plus tard dans le même code d'application.

Si ce n'est pas le problème, je pense que vous devez nous donner du code à lire afin que nous puissions aider plus.


1 commentaires

J'ai mis à jour ma question à être plus détaillé. Je génère l'UUID en dehors du logicApp et l'insertion de fonctionne fonctionne bien. C'est la mise à jour ou la suppression qui ne fonctionnent pas lorsque vous utilisez le même uuid, semble-t-il



1
votes

Je l'ai compris, j'ai effectivement supprimé l'ensemble du logicApp et la reconstruit et il reconnaît désormais que la colonne UUID est une PK. Je crois que lorsque l'application est d'abord connectée à SQL, il stocke le schéma et jamais mis à jour par la suite. J'avais reconstruit la connexion à quelques reprises, mais la seule chose qui l'a amené à mettre à jour était en reconstruisant le logicApp même. Je suis un peu convaincu que ceci est un bug, alors je pars ici comme une réponse au cas où quelqu'un entre jamais dans cette question dans le futur


2 commentaires

Vous pouvez l'accepter comme réponse. Cela peut être bénéfique pour les autres membres de la communauté. Merci.


Merci pour ce rappel. J'ai définitivement vécu cela dans le passé et que je suis en train de lire cela m'a aidé à résoudre mon problème ... Yep, il suffit de commencer avec des widgets frais pour le nouveau schéma.



0
votes

Au lieu de reconstruire l'application logique à partir de zéro, vous pouvez plutôt appuyer sur "Actualiser" (à côté du bouton "Modifier" lorsque vous allez modifier votre application logique). Travaillé pour moi


0 commentaires