插入递归引用Identity列的记录

本文探讨了在SQLServer中使用Identity列的一种特殊方法,即在一条INSERT语句中同时设置根实例ID和父实例ID,避免了传统做法中的多次操作。然而,在事务环境中这种做法可能导致某些字段值为NULL的问题。
        在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列理解不够深,不然就自如操作了。

转载于:https://www.cnblogs.com/badwood316/archive/2008/04/24/1169350.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值