【发布时间】:2016-02-05 12:17:52
【问题描述】:
我对 SQL 很陌生,目前正在使用 MS SQL Server Management Studio。我被分配了一项任务,我必须在其中创建一个包含某些表的数据库。其中两个表名为“Products”和“Categories”。创建完所有表后,我必须填充它们(在其中插入记录),这就是我卡住的地方。
这是创建两个表的代码:
类别表:
CREATE TABLE Categories (
CategoryID NCHAR(3) PRIMARY KEY,
Name NVARCHAR(50) NOT NULL);
产品表:
CREATE TABLE Products (
ProductID INT identity(1,1) PRIMARY KEY,
Name NVARCHAR(50) NOT NULL,
[Single Price] MONEY NOT NULL,
CategoryID NCHAR(3) NOT NULL,
FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID));
这里我将数据插入到类别表中:
INSERT INTO Categories (CategoryID, Name)
VALUES ('BKS', 'Books'),
('MSC','Music'),
('HDW', 'Hardware'),
('SFW', 'Software');
到目前为止一切顺利。这就是问题出现的地方! 我正在尝试将数据插入到 Products 表中,如下所示:
INSERT INTO Products (Name, [Single Price], CategoryID)
VALUES ('SQL for Dummies', 39.99, 'BKS'),
('The Power of Now', 24.99, 'BKS'),
('Steve Jobs: The Book', 29.99, 'BKS'),
('Eminem albums', 19.99, 'MSC'),
('Jay Z albums', 23.99, 'MSC'),
('Notorious B.I.G. albums', 24.99, 'MSC'),
('GeForce GT 710 2GB graphics card', 49.99, 'HDW'),
('2 TB T3 SSD', 79.99, 'HDW'),
('Acer Curved Gaming monitor', 259.99, 'HDW'),
('MS SQL Server Management Studio', 59.99, 'STW'),
('Visual Studio 2015', 69.99, 'SFW'),
('GTA V', 79.99, 'SFW');
我收到以下错误:
"INSERT 语句与 FOREIGN KEY 约束“FK__Products__Catego__99BF96C4”冲突。冲突发生在数据库“HackCompany”、表“dbo.Categories”、列“CategoryID”中。
语句已终止。"
如果有人可以提供任何帮助,我们将不胜感激!
【问题讨论】:
-
一个或多个类别不在类别表中。对于您的示例数据,这将是
'STW'。 -
哦,该死的!非常感谢,我不敢相信我没有看到这个!绝对解决了问题:)
标签: sql sql-server database foreign-keys sql-insert