我何时在SQL Server中使用自引用列?

时间:2018-02-22 04:11:59

标签: sql-server database foreign-keys constraints primary-key

CREATE TABLE sometbl 
(
    id INT primary key, 
    foreign key(id) references sometbl(id)
);

这个(引用自我)在SQL Server 2017中有效。我想知道这种约束的用例可能是什么?

因为它允许我插入或删除任何内容。

随意使用任何架构作为示例。

4 个答案:

答案 0 :(得分:1)

您可能有一个公司的例子,其中员工可能会被另一位现有员工推荐!

您可以创建一个包含列的表,大致如下:

EmpID not null int,
FirstName varchar(100),
...
...
RefEmpID null int

在这种情况下,您可以使用自联接来提取记录。

有很多例子,你可以通过推荐赚钱!

答案 1 :(得分:1)

考虑一个表Employee(empid int,empname varchar,empid manager引用Employee(empid))。

第三列引用与empid关联的员工的经理。经理也是员工,并在表中有自己的记录。因此,在这种情况下,我们可以使用自我加入来获取“谁是这个特定员工或这组员工的经理”之类的查询。

最顶级的经理会有最后一栏NULL

答案 2 :(得分:0)

SQL允许列具有主键约束,该主键约束是引用另一个表的主键的外键。

因此它允许主键和外键约束在同一列上。

你对它保留了主键约束,当你对它加上外键约束时,它只会检查它所引用的列是主列还是唯一列(即它是否具有(clustered / nonclusterd,唯一索引)在该栏目上或不)

答案 3 :(得分:0)

@RogerWolf可能是对的。 他评论说,"存在某种可能性这一事实并不意味着它总是有意义的......"