2014-01-11 332 views
1

我有一个名为Page的表,该表有一个名为Priority的列。我希望当我在页表中插入一行时,优先级列取值为插入行PageIdPageId是我的表主键。如何在插入后为sql server 2008制作触发器?

我写这触发了它:

CREATE TRIGGER PagePriority 
ON [Page] 
AFTER INSERT 
AS 
Begin 
update inserted 
set [Priority]=(select PageId from [Page] where Page.PageId=inserted.PageId) 
End 

但我对set行一些错误。

如何做到这一点?

+1

无法更新“伪代码表”'Inserted' - 你需要更新**自己的表,而不是**! –

+0

@marc_s是的,你说的对,收下。谢谢。 –

回答

1

请尝试以下(假设pageid是一个int)

CREATE TRIGGER PagePriority 
ON [Page] 
AFTER INSERT 
AS 
Begin 

DECLARE @thePageId integer = 0 
SET @thePageId = (SELECT PageId from inserted) 

update [Page] 
set [Page].Priority = @thePageId where [Page].PageId = @thePageId 

End 
+0

谢谢你的朋友:) –

+0

你的代码是错误的,如果插入多行,将不会产生正确的结果。 SQL Server触发器是**语句**,而不是基于行。人们应该总是考虑到这一点。 – peterm