1

我正在做一个项目,但问题出现了:插入语句可以将它自己的身份插入另一个字段吗?

这个想法是记录的层次结构,并且“父”字段将指向父记录的ID,而给定树的“顶部”记录将仅指向其自身。

我们当然可以将它留给父级,或者稍后返回并插入它的 ID。但我想知道在插入记录时是否有任何 SQL Server 操作将 IDENTITY 插入另一个字段?

编辑:或者有没有办法将一个字段的默认值指定为另一个字段的值?这也将解决这个问题。

编辑:默认字段是另一个字段似乎已经得到回答,答案是否定的,使用触发器。当然,这无助于约束和非空字段的问题。(http://social.msdn.microsoft.com/Forums/en/sqltools/thread/661d3dc8-b053-47b9-be74-302ffa11bf76

4

2 回答 2

0

不。对于这种层次结构,除非您要插入显式ID值,否则您SET IDENTITY_INSERT ON需要先插入顶层并使用SCOPE_IDENTITYorOUTPUT子句来获取插入ID的 s 以用于下一层。

于 2011-08-23T23:12:31.480 回答
0

在一定程度上可以。Insert 允许OUTPUT子句,并且 OUTPUT 可以重定向到一个表中,该表可以与您当前插入的表相同。以下示例插入一个父节点,但它也自动插入一个子节点,该子节点在插入期间将 parent_id 设置为新生成的 ID:

create table hierarchy (
    id int identity(1,1) not null primary key, 
    parent_id int null, 
    somefield varchar(100));


insert into hierarchy (parent_id, somefield)
    output inserted.id, 'child'
    into hierarchy (parent_id, somefield)
values (null, 'parent');    

select * from hierarchy;

不过,我最终没有看到任何实际用途,这更像是一个表演帽子戏法。

于 2011-08-24T05:12:36.110 回答