CREATE TABLE sometbl
(
id INT primary key,
foreign key(id) references sometbl(id)
);
这个(引用自我)在SQL Server 2017中有效。我想知道这种约束的用例可能是什么?
因为它允许我插入或删除任何内容。
随意使用任何架构作为示例。
答案 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可能是对的。 他评论说,"存在某种可能性这一事实并不意味着它总是有意义的......"