我需要遍历表中的字段,并在其值不等于其默认值时执行某些操作。SQL Server比较字段值与其默认值
我在触发器中,所以我知道表名。
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)。
无需担心多次插入,即可处理,但始终值得警告。我想我可能不得不开始使用临时表,我会调查该选项。 – 2009-01-20 12:24:42