mysql - 如何在表之间使用外键

标签 mysql sql

我正在尝试在表中创建新行,但遇到了 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/

相关文章:

mysql - 如何在 MySQL 中查找满足某些条件的日期时间?

sql - 将 SQL 消息输出到日志文件

sql - 如何从 SQL Server 数据库中删除所有外键?

php - 没有获得从 csv 文件中获取的正确数据

MYSQL返回不包括当前月份/年份的数据

php - PHP 文件上的 LIKE 查询问题

mysql - 将扑克牌的事件存储在数据库中

android - 在android中使用.sql文件?

sql - 创建表但如果表已经存在则删除它

mysql - 一张表中的分数总和