我试图删除并重新创建外键约束,但出现错误
在引用表“清单”中没有与外键“ fkInventory_VendorsInventory”中的引用列列表相匹配的主键或候选键。
我已经进入代码中所引用的两个表的表设计,并确保所引用的列是主键。
ALTER TABLE inventory_vendors
DROP CONSTRAINT fkInventory_VendorsInventory;
ALTER TABLE inventory_vendors
ADD CONSTRAINT fkInventory_VendorsInventory
FOREIGN KEY(itemnum) REFERENCES inventory(itemnum)
ON UPDATE CASCADE
ON DELETE CASCADE
我之前进行过这样的放松和娱乐,而另一组桌子根本没有问题(不幸的是,我不记得它们是哪张桌子)。
答案 0 :(得分:2)
正如您在评论中提到的,Inventory
表中有2个主键列:
一个是
itemnum
,另一个是store_id
我在这里准备一个示例SQL:创建了2个表
CREATE TABLE inventory
(
itemnum INT,
store_id INT,
inventoryDesc char(200),
primary key (itemnum, store_id)
);
CREATE TABLE inventory_vendors
(
inventory_vendors int,
itemnum INT,
store_id INT,
VendorDetails varchar(200),
primary key (inventory_vendors)
);
为主键之一创建唯一约束。在这里,我为itemnum
列创建唯一约束
ALTER TABLE inventory
ADD CONSTRAINT [IX_inventory] UNIQUE ( [itemnum] )
GO
然后执行脚本以在inventory_vendors
列的itemnum
上创建外键约束,也可以将其删除。
ALTER TABLE inventory_vendors
ADD CONSTRAINT fk_Inventory_Vendors_Inventory
FOREIGN KEY(itemnum) REFERENCES inventory(itemnum)
ON UPDATE CASCADE
ON DELETE CASCADE
ALTER TABLE inventory_vendors
DROP CONSTRAINT fk_Inventory_Vendors_Inventory;
希望这对您有帮助。