Как работать с внешним ключом между таблицами - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь создать новую строку в таблице, но сталкиваюсь с ошибками forgienKey.

Очевидно, я пытался создать новую строку в родительской таблице, но все еще сталкиваюсь с ошибками

CREATE TABLE dbo.Contacts
    (
        ContactId INT NOT NULL IDENTITY(1, 1) PRIMARY KEY ,
        Active BIT NOT NULL
            CONSTRAINT DF_Contacts_Active
                DEFAULT ( 1 ) ,
        FirstName NVARCHAR(100) ,
        MiddleName NVARCHAR(100) ,
        LastName NVARCHAR(100) ,
        DOB DATE ,
        ModifiedDate DATETIME
            CONSTRAINT DF_Contacts_ModifiedDate
                DEFAULT ( GETDATE())
    );


INSERT dbo.Contacts ( Active ,
                      FirstName ,
                      MiddleName ,
                      LastName ,
                      DOB ,
                      ModifiedDate )
VALUES ( 0, N'William', N'James', N'Murray', '9/21/1950', '1/1/2018 3:01:47' ) ,
       ( 1, N'Judith', N'Olivia', N'Dench', '12/9/1934', '3/10/2011 17:52:00' ) ,
       ( 1, N'Terry', N'Alan', N'Crews', '7/30/1968', '9/28/2014 12:41:31' ) ,
       ( 1, N'Pamela', N'Suzette', N'Grier', '5/26/1949', '1/1/2018 11:52:23' ) ,
       ( 1, 'John', 'S.', 'Doe', '1/1/2000', '7/10/2018 19:43:22' ) ,
       ( 1, 'Jane', 'K.', 'Smith', '4/16/1987', '2/2/2015 9:00:00' ) ,
       ( 1, 'Henry', 'D.', 'Williams', '7/21/92', '5/18/17 7:29:10' ) ,
       ( 1, 'Jessica', 'L.', 'Jones', '8/30/88', '9/19/10 10:28:51' );

CREATE TABLE dbo.Employees
    (
        EmployeeId INT NOT NULL IDENTITY(1, 1) PRIMARY KEY ,
        FirstName NVARCHAR(100) ,
        LastName NVARCHAR(100) ,
        ContactId INT NOT NULL
            CONSTRAINT FK_Employees_ContactId_ref_Contacts_ContactId
            REFERENCES dbo.Contacts ( ContactId ) ,
        ManagerId INT
    );

INSERT dbo.Employees ( FirstName ,
                       LastName ,
                       ContactId ,
                       ManagerId )
VALUES ( N'John', N'Doe', 5, NULL ) ,
       ( 'Jane', 'Smith', 6, 1 ) ,
       ( 'Henry', 'Williams', 7, 2 ) ,
       ( 'Jessica', 'Jones', 8, 3 );

- написать оператор, который создает строку, представляющую вас в Employeesтаблица без использования ключевого слова VALUES

INSERT into Employees 
SELECT FirstName, LastName, ContactId + 1, ManagerId+1 FROM Employees
WHERE ContactId = 8
Update Employees
SET FirstName = 'John', LastName = 'doe'
WHERE EmployeeId = 5
Select * from Employees

1 Ответ

0 голосов
/ 20 июня 2019

Чтобы вставить Алана Терри в таблицу Employee

INSERT into Employees 
SELECT FirstName, LastName, ContactId, NULL FROM Employees
WHERE ContactId = 3

Установить Джона Доу в качестве менеджера Алана

Update Employees
SET ManagerID = 1
WHERE EmployeeId = 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...