我有一个数据库,我想向该表中插入新值,问题是我有两个彼此为FK的表。我知道问题出在Alter Table
,但我无法弄清楚是什么原因造成的。
第一张表:部门
CREATE TABLE [dbo].[Department]
(
[DID] [int] primary key,
[Name] [varchar](255) ,
[Description] [varchar](255) ,
[ManagerId] [int]
);
第二张表:OfficialEmployee
CREATE TABLE [dbo].[OfficialEmployee]
(
[EID] [int] primary key,
[StartDate] [date] ,
[Degree] [varchar](255) ,
[DepartmentId] [int] ,
CONSTRAINT [FK_DIDOfficial]
FOREIGN KEY([EID]) REFERENCES [dbo].[Employee] ([EID])
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT [FK_EIDOfficial]
FOREIGN KEY([DepartmentId]) REFERENCES [dbo].[Department] ([DID])
ON UPDATE CASCADE ON DELETE CASCADE
);
更改表的表达式:
ALTER TABLE [dbo].[Department] WITH CHECK
ADD CONSTRAINT [FK_DepMan]
FOREIGN KEY([ManagerId]) REFERENCES [dbo].[OfficialEmployee] ([EID])
ON DELETE NO ACTION
我只需要有人告诉我如何将值插入表之一
提前谢谢
答案 0 :(得分:2)
鉴于结构,我认为您需要两个插入和一个更新:
NULL
经理一起插入新部门。答案 1 :(得分:1)
延迟约束将帮助解决这种情况,而无需插入空值行。但是只有Postgresql和Oracle支持这种约束。使用DEFERRABLE关键字时,约束仅在事务提交时强制执行。不幸的是,SQL Server不支持此约束。