如何将行插入具有相同主键和外键的自引用表?

时间:2017-02-28 14:46:37

标签: sql sql-server

在SQL Server 2012中,我有一个带有自引用外键的表,该外键引用一个Identity列的主键列。你能告诉我如何插入外键引用同一行主键的行吗?

Create Table MyTable
(
    PersonID int primary key Identity(1,1),
    PersonName varchar(20) not null,
    HeadofPersonID int not null references MyTable(PersonID)
)

我需要插入的行:

1, 'Mickey Mouse', 1

在这种情况下,Mickey拥有身份生成的主键1,而Mickey也是他自己(可能还有其他人)的负责人。在insert语句中的外键中我需要提到什么?

1 个答案:

答案 0 :(得分:4)

从外键列声明中删除not null约束,并在 HeadofPersonID 中插入NULL作为层次结构的头部:

Create Table MyTable
(
    PersonID int primary key Identity(1,1),
    PersonName varchar(20) not null,
    HeadofPersonID int references MyTable(PersonID)
)