我需要遍历表上的字段并在其值不等于其默认值时执行某些操作。
我在触发器中,所以我知道表名。然后我使用这个循环遍历每个字段:
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。因为我没有将字段名称作为常量,只有在变量中,我看不到如何从 ' 中获取值插入的表(记住我在触发器中),以查看它是否与默认值相同(现在作为 varchar 保存在 @ColDefault 中)。