Мне нужно перебрать поля таблицы и что-то сделать, если его значение не равно значению по умолчанию.
Я в триггере и поэтому знаю имя таблицы. Затем я перебираю каждый из
поля, использующие этот цикл:
select @field = 0, @maxfield = max(ORDINAL_POSITION) from
INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @TableName
while @field < @maxfield
begin
...
Затем я могу получить имя поля на каждой итерации через цикл:
select @fieldname = COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TableName
and ORDINAL_POSITION = @field
И я могу получить значение по умолчанию для этого столбца:
select @ColDefault = SUBSTRING(Column_Default,2,LEN(Column_Default)-2)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE Table_Name = @TableName
AND Column_name = @fieldname
У меня есть все, что мне нужно, но я не вижу, как потом сравнить 2. Потому что
У меня нет имени поля как константы, только в переменной, я не вижу
как получить значение из таблицы «вставлено» (помните, я в триггере)
для того, чтобы увидеть, если оно совпадает со значением по умолчанию (теперь хранится в
@ColDefault как varchar).