2010-10-03 118 views
0

任何人都可以告诉我,如何在将数据插入数据库时​​更新记录的列。 这是我想要的伪代码。SQL Server 2008中的简单触发器

if(mytable.OriginalId == null) 
    mytable.OriginalId = Scope_Identity(); 
+0

http://msdn.microsoft.com/en-us/library /ms189799.aspx – 2010-10-03 09:59:29

+0

这里有一个问题:AFAIK你只能在AFTER UDPATE触发器上获取生成的标识 - 所以你必须在表上执行另一个更新来更改'OriginalId' ...这是可行的,但我会不建议。在这种情况下,我会推荐第三个计算列,并使用表达式“COALESCE(OriginalID,ID)”。更简单,不需要触发器,它会给你预期的结果。 – rsenna 2010-10-03 15:55:16

回答

1

这将是矛盾的我认为。无论是OriginalId设置还是未插入。

如果不是Scope_Identity()从哪里得到它的价值?如果是来自另一列,那么使用计算列会不会更好?

对不起,目前还不清楚的总体目标是什么...你通常不会使用触发器,特别是如果OriginalId是PK的一部分

+0

对不起,我应该提到。 PK是另一个名为“Id”的列。 – mrtaikandi 2010-10-03 10:23:11

+0

谢谢。而且应该OriginalId总是和ID一样?或不同? – gbn 2010-10-03 10:47:56

+0

如果用户将其设置为空,它应该与ID相同,否则它应该是用户想要的任何内容。 – mrtaikandi 2010-10-03 11:43:06