gpt4 book ai didi

sql - 引用自身的外键列的作用(或目的)是什么?

转载 作者:行者123 更新时间:2023-12-04 12:42:10 25 4
gpt4 key购买 nike

在数据库迁移期间,我遇到了以下形式的数据库表约束:

ALTER TABLE [dbo].[myTable]
ADD CONSTRAINT [someName] FOREIGN KEY ([id]) REFERENCES [dbo].[myTable] ([id])
ON DELETE NO ACTION
ON UPDATE NO ACTION

为什么要这样做?这最初是在 Sybase 数据库上完成的,我们正在转换为 SQL Server 2008 R2。

更新 : 是的,外键约束是引用同一个表和相同字段的字段。

我在源 Sybase 数据库上运行了这个查询,发现定义了 42 个这些疯狂的键,所以它看起来不像是一个错字。
SELECT sr.constrid as [Constraint ID],
so.name as [Table],
sc.name as [Column]
FROM sysreferences sr
INNER JOIN sysobjects so ON (so.id = sr.tableid)
INNER JOIN syscolumns sc ON (sc.id = sr.tableid AND sc.colid = sr.fokey1)
WHERE sr.tableid = sr.reftabid
AND sr.fokey1 = sr.refkey1
AND sr.fokey2 = 0
AND sr.refkey2 = 0

最佳答案

我相信,每当您对同一张表使用外键时,层次结构是您在书中可以找到的标准示例,例如:

create table Employees (
EmployeeID int identity primary key,
EmployeeName varchar(50),
ManagerID int
Foreign key (managerID) references Employees(EmployeeID)
)

您发布的内容看起来像是在同一个表中错误地应用了此层次结构关系。我不完全确定你为什么要那样做。

希望这有帮助 =)

关于sql - 引用自身的外键列的作用(或目的)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12964251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com