如何使用外键将值插入现有 SQL 服务器表

How to insert values into existing SQL Server tables with foreign keys

我有一个数据库,我想向 table 插入新值,问题是我有两个 table 彼此 FK。我知道问题出在 Alter Table,但我不知道是什么原因造成的。

第一个table:部门

 CREATE TABLE [dbo].[Department]
 (
    [DID] [int]  primary key,
    [Name] [varchar](255) ,
    [Description] [varchar](255) ,
    [ManagerId] [int]
);

第二个table: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
);

改变Table表达式:

ALTER TABLE [dbo].[Department] WITH CHECK 
    ADD CONSTRAINT [FK_DepMan] 
        FOREIGN KEY([ManagerId]) REFERENCES [dbo].[OfficialEmployee] ([EID]) 
                ON DELETE NO ACTION

我只需要有人告诉我如何将值插入 tables

之一

提前致谢

鉴于结构,我认为您需要两次插入和一次更新:

  1. 插入一个有 NULL 经理的新部门。
  2. 在员工中插入经理table。
  3. 用经理的 ID 更新部门。

延迟约束将有助于解决这种情况,而无需插入空值行。但只有 Postgresql 和 Oracle 支持这种约束。使用 DEFERRABLE 关键字时,将仅在事务提交时强制执行约束。不幸的是 sql 服务器不支持此约束。