Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLServer2008中的简单触发器_Sql_Triggers_Sql Server 2008 R2 - Fatal编程技术网

SQLServer2008中的简单触发器

SQLServer2008中的简单触发器,sql,triggers,sql-server-2008-r2,Sql,Triggers,Sql Server 2008 R2,有谁能告诉我,当记录的一列被插入数据库时,如何更新它。 这是我想要的伪代码 if( mytable.OriginalId == null ) mytable.OriginalId = Scope_Identity(); 我认为这是自相矛盾的。插入时,要么已设置OriginalId,要么未设置OriginalId 如果不是,Scope\u Identity()从何处获取其值?如果它来自另一列,那么使用计算列不是更好吗 对不起,不清楚总体目标是什么。。。您通常不会使用触发器,特别是如果Or

有谁能告诉我,当记录的一列被插入数据库时,如何更新它。 这是我想要的伪代码

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

我认为这是自相矛盾的。插入时,要么已设置OriginalId,要么未设置OriginalId

如果不是,
Scope\u Identity()
从何处获取其值?如果它来自另一列,那么使用计算列不是更好吗


对不起,不清楚总体目标是什么。。。您通常不会使用触发器,特别是如果OriginalId是PK的一部分,这里有一个问题:您只能在AFTER-UDPATE触发器上获取生成的标识-因此您必须对表执行另一次更新以更改
OriginalId
。。。这是可行的,但我不建议这样做。在这种情况下,我建议使用第三个计算列,其表达式为
COALESCE(OriginalID,ID)
。更简单,不需要触发器,它会给你预期的结果。对不起,我应该提到。PK是另一个名为“Id”的栏目。谢谢。OriginalId是否应该始终与ID相同?或者不同?如果用户将其设置为null,则它应该与ID相同,否则它应该是用户想要的任何内容。