【发布时间】:2013-05-17 19:00:46
【问题描述】:
好吧,我遇到了一些愚蠢的问题。在 SQL Server 2012 中,我尝试像这样实现城市数据库:有一个 City 对象,一个 Street 对象指向街道所在的 City,还有一个 House 对象指向 @987654326 @房子所在的位置。
所以我写的:
CREATE TABLE City
(
CityID INTEGER NOT NULL,
CityName VARCHAR(50) NOT NULL,
PRIMARY KEY(CityID)
)
INSERT INTO City VALUES
(1, 'Moscow'),
-- Code for 2-7id's instructions is there
(8, 'Kazan');
CREATE TABLE Street
(
StreetID INTEGER NOT NULL,
StreetName VARCHAR(50) NOT NULL,
CityID INTEGER NOT NULL,
FOREIGN KEY(CityID) REFERENCES City(CityID),
PRIMARY KEY(StreetID)
)
INSERT INTO Street VALUES
(1, 'Nation Street', 1),
-- code for 2-19 id's insertions is there
(20, 'Fuj Street', 8);
CREATE TABLE House
(
HouseID INTEGER NOT NULL,
StreetID INTEGER NOT NULL,
Height INTEGER NOT NULL,
FOREIGN KEY (StreetID) REFERENCES Street(StreetID),
PRIMARY KEY(HouseID)
)
INSERT INTO House VALUES
(1, 1, 100),
-- ...
第一次插入INSERT INTO HOUSE VALUES 有一个错误,编译器说INSERT 和FOREIGN KEY 存在一些限制冲突,但我完全不明白他在抱怨什么。
所有数据实际上都在表中,为什么我不能简单地进行插入?
这个问题的解决方法是什么?
错误信息:
INSERT 语句与 FOREIGN KEY 约束冲突冲突发生在数据库,...,表“dbo.Street”,列“StreetID”
【问题讨论】:
-
也许粘贴错误消息而不是您从中记住的内容会有所帮助...不要做一个愚蠢的用户,尝试尽可能多地从错误消息中获取。
-
您应该在 INSERT 语句中指定字段顺序:
INSERT INTO House (HouseID, StreetID, Height) VALUES (1, 1, 100), -
sqlfiddle.com/#!6/ae5a4/1 。给出的样本数据,就像一个魅力!所以给你所有的代码,也许......
-
您确定 INSERT INTO HOUSE 中的所有值都是正确的。你没有把它们都显示对吗?
标签: sql foreign-keys sql-server-2012 insertion