mysql - 插入语句在 MYSQL 中不起作用(FOREIGN KEY)

标签 mysql sql sql-server

你好,我遇到了这个错误,但不知道如何解决,有人知道我应该如何解决这个问题,这样我的插入语句才能正常工作吗?

The INSERT statement conflicted with the FOREIGN KEY SAME TABLE constraint "fk_person_fatherID"

我假设它是因为外键在主键之外起作用,并且在插入语句中我在创建它们之前声明了它们?我可能完全离开了,请帮忙(:

CREATE TABLE person
(
persID           INT IDENTITY(1,1),
persFName        VARCHAR(40) NOT NULL,
persLName        VARCHAR(40) NOT NULL,
persGender       CHAR(1) NOT NULL,
persDOB          DATE NOT NULL,
persDOD          DATE ,
fatherID         INT ,
motherID         INT ,

CONSTRAINT pk_person_persID PRIMARY KEY(persID),
CONSTRAINT fk_person_fatherID FOREIGN KEY (fatherID) REFERENCES person(persID),
CONSTRAINT fk_person_motherID FOREIGN KEY (motherID) REFERENCES person(persID),

这是我的插入语句。

INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID)
    VALUES ('Abraham', 'Simpson', 'M', '1994-01-15', '2015-07-21',NULL,NULL),
     ('Mona', 'Simpson', 'F', '1946-09-22', NULL,NULL,NULL),
     ( 'Herb', 'Simpson', 'M', '1963-11-21',NULL,1,2),
     ( 'Homer', 'Simpson', 'M', '1965-05-19',NULL,1,2),
     ( 'Clancy', 'Bouvier', 'F', '1945-02-12',NULL,NULL,NULL),
     ( 'Jackie', 'Bouvier', 'M', '1945-12-01','2016-05-15',NULL,NULL),
     ( 'Marge', 'Simpson', 'F', '1966-05-18',NULL,6,5),
     ( 'Patty', 'Bouvier', 'F', '1964-01-08',NULL,6,5),
     ( 'Selma', 'Bouvier', 'F', '1969-03-01',NULL,6,5),
     ( 'Bart', 'Simpson', 'M', '1990-01-01',NULL,4,7),
     ( 'Lisa', 'Simpson', 'F', '1992-05-15',NULL,4,7),
     ( 'Maggie', 'Simpson', 'F', '1997-11-28',NULL,4,7),
     ( 'Ling', 'Bouvier', 'M', '2000-04-02',NULL,NULL,9)

最佳答案

我想,错误信息已经很清楚了。

INSERT INTO person(persFName,persLname,persGender,persDOB,persDOD,fatherID,motherID)
     ( 'Herb', 'Simpson', 'M', '1963-11-21',NULL,1,2)
     ( 'Homer', 'Simpson', 'M', '1965-05-19',NULL,1,2)

您正在尝试将 FatherId 值设置为 1,但我认为 person 表中没有 ID 为 1 的记录

关于mysql - 插入语句在 MYSQL 中不起作用(FOREIGN KEY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47936748/

相关文章:

sql - 在 WHERE 语句中使用 OR 进行慢速 JOIN 查询

sql - Postgres 环绕问题

sql-server - 将列值展平为字符串

php - 在其他两列为零的列中查找最小值

mysql - 如何在一个查询中组合多个 SUM?

mysql - 如何在mysql中搜索使重音字符与非重音字符相同?

asp.net - 本地主机上的 SQL Server 2008 : Connection continually refused

mysql - SQL 仅选择列上具有最大值的行

sql - 如何通过逗号分隔将 2 行合并为一行?

sql - 参数化查询需要未提供的参数