插入递归引用Identity列的记录
在SQL Server中有个表,设计如下:
实例序号 PI_sequence
根实例ID PI_rootid
父实例ID PI_fatherid
其中实例序号列为Identity列,根实例ID和父实例ID都是引用了实例序号的列,有可能出现3个字段完全相等的记录,以前的做法是用两条语句做,先Insert然后Update根实例ID和父实例ID,详情可以参见《如何在C#中获取新插入的identity列值》,今天随意尝试了下面的语句:
这个问题还是自己基本功不到位,对Identity列理解不够深,不然就自如操作了。
实例序号 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列理解不够深,不然就自如操作了。