Je suis en train d'écrire un script DML qui met à jour une colonne, mais je voulais vous assurer que la colonne existait d'abord si je l'ai enveloppé dans un if exists blocinstruction UPDATE enveloppé dans un IF EXISTS bloc
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Client' AND COLUMN_NAME='IsClarityEnabled')
BEGIN
UPDATE Client SET IsClarityEnabled = 1 WHERE ClientID = 21
END
Donc l'étrangeté est qu'il essaye d'exécuter la mise à jour même si elle échoue la condition. Donc la colonne n'existe pas et l'instruction UPDATE s'exécute et j'obtiens une erreur. Pourquoi?
Encore plus étrange est que cela fonctionne:
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Client' AND COLUMN_NAME='IsClarityEnabled')
BEGIN
EXEC('UPDATE Client SET IsClarityEnabled = 1 WHERE ClientID = 21')
END
Y at-il quelque chose de spécial au sujet d'une commande UPDATE qui provoque de se comporter de cette façon?
Cette question signifie-t-elle que vous utilisez Clarity? Si oui, je ressens votre douleur. – HLGEM
Oui, la clarté est utilisée ici. En soi, ce n'est pas si mal. – ant