我有一个数据库,我想向表中插入新值,问题是我有两个表与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
我只需要有人告诉我如何在其中一个表中插入值
先感谢您
2 回答
延迟约束将有助于解决这种情况,而无需插入空值行 . 但只有Postgresql和Oracle支持这种约束 . 在使用DEFERRABLE关键字时,仅在事务提交时强制执行约束 . 不幸的是,sql server不支持这种约束 .
鉴于结构,我认为你需要两个插入和更新:
使用
NULL
经理插入新部门 .在employees表中插入经理 .
使用经理的ID更新部门 .