J'utilise un constructeur de requête pour générer des SQL pour plusieurs dialectes.
La requête suivante me donne une erreur et je n'arrive pas à comprendre ce que le problème est: p> Erreur # 46010 sur la ligne 1, Colonne 66: Syntaxe incorrecte près de "objec_id". P>
blockQquote> "objec_id" est dans des guillemets car certaines colonnes ont été nommées d'après des mots-clés existants dans certains dialectes, il devrait donc rester de cette façon. P> J'ai déjà essayé de citer et non vouloir les spécificateurs de la table, retirez-les. Il "fonctionne" si je supprimais la clause où il est donc définitivement là-bas. P> EDIT: je n'ai pas la commande exacte de la table Create, mais voici une capture d'écran de toutes les définitions de colonne (les champs en caractères gras sont Obligatoire): p> EDIT 2: Il existe des déclencheurs sur la table, mais uniquement sur la mise à jour des horodatages. Il y a à coup sûr de déclencheurs sur "Langname". Ce n'est pas non plus un champ unique. C'est le reste que je connais sur la table: p>
3 Réponses :
Utilisez des crochets à la place:
UPDATE dbo.OBJECT SET LANGNAME = 'FooBar' WHERE dbo.OBJECT.["OBJEC_ID"] IN (69, 42, 1337)
Merci pour les informations sur cela, vous pouvez le faire, mais cela ne résout pas le problème. Objec_id n'est pas un mot réservé, mais il est toujours erreurs à ce moment-là. Je l'ai testé avec des crochets mais cela ne change pas le résultat.
Il y a autre chose qui cause l'erreur? Voir le sqlfiddle. Où dirigez-vous la commande?
Le problème était en réalité l'outil que j'ai utilisé pour tester ne fonctionnant pas correctement. Je n'ai plus d'erreurs d'analyse avec cette méthode. Désolé pour la confusion et merci!
Essayez comme ci-dessous
UPDATE a
SET LANGNAME = 'FooBar'
from dbo.OBJECT a WHERE a."OBJEC_ID" IN (69, 42, 1337)
Essayez la solution ci-dessous. Utilisez des crochets au lieu de citations telles que dbo.object. [objec_id] code> au lieu de dbo.Object. "objec_id" code>. UPDATE dbo.OBJECT SET LANGNAME = 'FooBar' WHERE dbo.OBJECT.[OBJEC_ID] IN (69, 42, 1337)
S'il vous plaît partager
dbo.Object code> Définition (Créer une table code>)Vous pouvez écrire uniquement le nom de la colonne dans la condition comme
update dbo.Object Set LangName = 'foobar' où objec_id in (69, 42, 1337) code> J'ai testé cette syntaxe sur aventurework2017Avez-vous des déclencheurs sur cette table? Il y a quelque chose de causer l'erreur que vous ne nous en parlez pas, bien que votre requête soit bien. En outre, il me semble que SQL Server ne spécifiera pas
colonne 66 code> dans le message d'erreur. Le message d'erreur serait commemsg 102 niveau 15 état 1 ligne 6 code>L'image que vous venez de partager est pour
index code> ES pasdéclencheur code> s. Et puisque vous affirmez qu'il y a des déclencheurs sur la table, l'erreur vient à coup sûr ou l'outil que vous utilisez.