Как вставить значения в существующие таблицы SQL Server с внешними ключами - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть база данных, и я хочу вставить новые значения в таблицу, проблема в том, что у меня есть две таблицы с 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 ]

0 голосов
/ 08 декабря 2018

Отложенное ограничение поможет решить этот случай без необходимости вставки строк с нулевым значением.Но только Postgresql и Oracle поддерживают такие ограничения.При использовании ключевого слова DEFERRABLE ограничение будет применяться только во время принятия транзакции.К сожалению, сервер SQL не поддерживает это ограничение.

0 голосов
/ 08 декабря 2018

Учитывая структуру, я думаю, вам нужны две вставки и обновление:

  1. Вставка нового отдела с NULL менеджером.
  2. Вставка менеджера в таблицу сотрудников.
  3. Обновите отдел, указав идентификатор менеджера.
...