我正在尝试在表中创建新行,但遇到了 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 );
--编写一条语句,在员工表中创建代表您的行,而不使用 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
最佳答案
在 Employee 表中插入 Alan Terry
INSERT into Employees
SELECT FirstName, LastName, ContactId, NULL FROM Employees
WHERE ContactId = 3
设置 John Doe 为 Alan 的经理
Update Employees
SET ManagerID = 1
WHERE EmployeeId = 5
关于mysql - 如何在表之间使用外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56678723/