【发布时间】:2015-12-23 13:36:34
【问题描述】:
我想编写一个触发器,它应该找出插入或更新的值是否为正值并将其替换为负值。 我试过这段代码:
create trigger trigger_after_updaten on Inbox
AFTER Update
AS
begin
DECLARE @t INT
If ((SELECT @t=ID_In FROM updated)>0)
UPDATE Inbox SET t=@t*-1
END
但它显示此错误:
Msg 102, Level 15, State 1, Procedure trigger_after_updaten, Line 223
Incorrect syntax near '='.
如何以正确的方式做到这一点?
【问题讨论】:
-
触发器定义不正确。始终认为插入的表有几行。而且 SQL Server 没有更新的表,只是“插入”和“删除”。
-
另一种解决方案是将 CHECK CONSTRAINT 添加到列中,限制接受的值 (msdn.microsoft.com/en-GB/library/ms176104.aspx)。
-
我是第二个目的地的建议 - 让数据库拒绝不正确的数据比默默地“修复”它要好得多。静默修复可能会被遗忘,然后会在以后产生非常混乱的调试体验。
标签: sql-server triggers sql-update sql-insert