我想编写一个触发器,该触发器应该查找插入或更新的值是否为正值,并将其替换为负值。 我试过这段代码:如何在更新或插入后将插入的正值转换为负值?
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 [email protected]*-1
END
,但它表明这个错误:
Msg 102, Level 15, State 1, Procedure trigger_after_updaten, Line 223
Incorrect syntax near '='.
如何做到这一点的正确方法?
不正确的触发定义。始终考虑插入的表格有多行。并且SQL Server没有更新的表,只是“插入”和“删除”。 –
另一种解决方案是将CHECK CONSTRAINT添加到列中,限制接受的值(https://msdn.microsoft.com/zh-CN/library/ms176104.aspx)。 –
我想要第二个目的地的建议 - 让DB拒绝不正确的数据比静静地“修复”它要好得多。无声修复可能会被遗忘,然后会产生非常混乱的调试体验。 –