Я пытаюсь написать сценарий DML, который обновляет столбец, но я хотел убедиться, что столбец существует первым, поэтому я поместил его в блок IF EXISTS
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
Таким образом, странность заключается в том, что он пытается выполнить обновление, даже если не выполняется условие. Таким образом, столбец не существует, выполняется инструкция UPDATE, и я получаю сообщение об ошибке. Почему?
Даже странно, что это работает:
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
Есть ли в команде UPDATE что-то особенное, что заставляет ее так себя вести?