【发布时间】:2016-04-14 07:40:18
【问题描述】:
我遇到了一个涉及在 MS SQL 服务器中运行 mySQL 代码的问题。 我使用身份在大多数表中自动增加 ID 号。例如:
CREATE TABLE klant (
klantnr INTEGER identity (1, 1) PRIMARY KEY,
bedrijfsnaam VARCHAR (50) NOT NULL
)
我正在尝试在我的登录表中插入此表中存在的相同“klantnr”值,该值被定义为 Klant 表的外键:
CREATE TABLE Logins (
GebruikersNaam VARCHAR (30),
Wachtwoord VARCHAR (30),
Klantnr INT,
MdwNr INT,
CONSTRAINT pk_logID PRIMARY KEY (GebruikersNaam),
CONSTRAINT fk_klantnr FOREIGN KEY (klantnr) REFERENCES klant (klantnr),
CONSTRAINT fk_mdwnr FOREIGN KEY (mdwnr) REFERENCES medewerker (mdwnr)
)
以下是插页:
INSERT INTO klant VALUES ('Jumbo'); -- (this is the first insert, klantnr is 1)
INSERT INTO Logins VALUES ('KlantTest', 'test', 1, NULL);
错误:消息 547,级别 16,状态 0,行 302 INSERT 语句 与 FOREIGN KEY 约束“fk_klantnr”冲突。冲突 发生在数据库“DorblogisticsB31B”,表“dbo.klant”,列 'klantnr'。
我做错了什么?
【问题讨论】:
-
SELECT * FROM klant WHERE klantnr = 1可能为空 -
@wero,不。第一个插入是 klantnr = 1。
-
你看表了吗?
-
@wero,是的。 Klantnr = 1 Bedrijfsnaam = 'Jumbo'。
-
删除你的表,重新运行创建表脚本,没有第三个约束。然后按顺序运行插入,语句就会运行。您收到该错误是因为它在父表中找不到匹配的“klantnr”。
标签: sql-server insert identity