首页 文章

如何使用外键将值插入现有SQL Server表

提问于
浏览
0

我有一个数据库,我想向表中插入新值,问题是我有两个表与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 回答

  • 2

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

  • 1

    鉴于结构,我认为你需要两个插入和更新:

    • 使用 NULL 经理插入新部门 .

    • 在employees表中插入经理 .

    • 使用经理的ID更新部门 .

相关问题