插入递归引用Identity列的记录

        在SQL Server中有个表,设计如下:
            实例序号    PI_sequence 
            根实例ID    PI_rootid 
            父实例ID    PI_fatherid 
        其中实例序号列为Identity列,根实例ID和父实例ID都是引用了实例序号的列,有可能出现3个字段
完全相等的记录,以前的做法是用两条语句做,先Insert然后Update根实例ID和父实例ID,详情可以参见《如何在C#中获取新插入的identity列值》,今天随意尝试了下面的语句:
insert into tbProcessInstance(Process_id,PI_rootid,PI_fatherid) values(1,SCOPE_IDENTITY()+1,SCOPE_IDENTITY()+1)
        发现可以实现一步到位,但是不知道为何在事务环境下这条语句插入的PI_rootid和PI_fatherid为null。
        这个问题还是自己基本功不到位,对Identity列理解不够深,不然就自如操作了。
posted @ 2008-04-24 14:50  badwood  阅读(173)  评论(2编辑  收藏  举报
Badwood's Blog