Sql 多重外键约束

本文探讨了SQL中的多重外键约束,即一个表中的两个或更多外键指向同一主键表的情况。以部门管理为例,部门可能有正副两个管理者。在一般情况下,部门表(Department)的ManagerID和SupporterID外键分别对应Manager和Supporter表,且可设置级联删除。然而,在多重外键约束下,SQL Server只允许一个外键设置级联删除,否则会导致循环或多重级联路径错误,需改为NO ACTION或UPDATE NO ACTION。
摘要由CSDN通过智能技术生成


多重外键约束这个名称可能并不准确,它是多个外键约束情况的一个特例,它指的是外键表有存在两个及以上外键关联到同一个主键表,例如一个部门,有正副两个管理者

首先看看不含多重外键的多个外键约束的一般情况,例如一个部门,有一个管理者和一个IT技术支持

CREATE TABLE [dbo].[Manager] --管理者表
(
[ID] [int] NOT NULL IDENTITY(1, 1),
[Name] [nvarchar] (max) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Manager] ADD CONSTRAINT [PK_dbo.Manager] PRIMARY KEY CLUSTERED  ([ID]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Supporter] --IT支持者表
(
[ID] [int] NOT NULL IDENTITY(1, 1),
[Name] [nvarchar] (max) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Supporter] ADD CONSTRAINT [PK_dbo.Supporter] PRIMARY KEY CLUSTERED  ([ID]) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Department] --部门表
(
[ID] [int] NOT NULL IDENTITY(1, 1),
[Name] [nvarchar] (max) COLLATE Chinese_PRC_CI_AS NULL,
[ManagerID] [int] NOT NULL,
[SupporterID] [i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值