我需要遍歷表中的字段,並在其值不等於其默認值時執行某些操作。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