问题描述
我有2个表格,供应商和产品。我正在尝试用随机信息填充它们。
表格产品,列vendor_id。我将此列default
的值设置为 -1 。
在尝试在给定列中插入默认值的行上出现错误。 检查下面的代码,帖子底部的错误消息。
供应商:
CREATE TABLE suppliers
(
id int primary key identity(1,1),"name" nvarchar(50) not null,telephone nvarchar(50) default 'N/A',"address" nvarchar(50) default 'N/A'
)
INSERT INTO suppliers (name,telephone,address)
values ('supplier 1','021-555-333','Jovana Petrovica 72,Beograd 11000'),('supplier 2','Branka Radicevica 13,Zrenjanin 23000'),('supplier 3','Bulevar oslobodjenja 30A,Novi Sad 21000')
产品:
CREATE TABLE Products
(
id int primary key identity(1,price float default 0,supplier_id int default -1,foreign key (supplier_id) references suppliers(id) ON DELETE SET DEFAULT
)
INSERT INTO Products (name,price,supplier_id)
values ('Product 1',800,3),('Product 2',1300,('Product 3',230,2),('Product 4',570,('Product 5',1225,2);
INSERT INTO Products (name,price)
values ('Product 6',80); // I read online this is the way to insert default values (?)
错误消息:
INSERT语句与FOREIGN KEY约束“ FK__Products__suppli__03F0984C”发生冲突。数据库“ Tehna”的表“ dbo.suppliers”的列“ id”中发生了冲突。 该声明已终止。
解决方法
我猜默认的'supplier_id'应该大于0或为null,因为它与Suppliers中的'id'有关,后者既是主键又是整数