我有一张书桌和一张音乐桌。这两个表都有一个 Product_ID 作为它们的主键。我还有一个产品表,其中有一个 Product_ID 列和一个类型列(0 代表书籍,1 代表音乐),其中 Product_Id 和类型列是表的主键。在 phpMyAdmin 中,这 2 列带有下划线,并且表的 SHOW COLUMNS 显示 Type 和 Product_Id 标记为主键。
我遇到的问题是我的触发器。有 2 个触发器,在处理不同的表时有一些不同之处。例如,音乐触发器执行以下语句:
INSERT INTO products
SET
Type=1,
Product_Id=NEW.Product_ID,
Title=NEW.Album,
Price=0
书籍触发器是相同的,除了 type=0 和 NEW.Album 被 NEW.Title 替换。但是,当我现在运行 INSERT 查询时,在插入和删除了一些数据之后,我得到了一个重复的主键错误。问题是 MySQL 数据库仅读取 Product_ID 列作为主键,因此当它尝试在那里插入重复项时,即使 Type 列中的值不同,它也会吐出此错误。我被难住了。
产品表
Product_Id int(11) - PK
Title int(11)
Price double
Type int(11) - PK
NewBool tinyint(1)
音乐桌
Product_ID int(11) - PK
Artist varchar(32)
Album varchar(32)
Genre varchar(32)
Year int(11)
Length double
Rating double
NumRatings int(11)
Studio varchar(64)
书桌
Product_ID int(11) - PK
ISBN bigint(20)
Title text
Author text
Year int(11)
Genre text
Pages int(11)
Publisher text
Edition int(11)
Rating double
NumRatings int(11)