我有一张书桌和一张音乐桌。这两个表都有一个Product_ID作为它们的主键。在phpMyAdmin中,这两列带有下划线,并且表的显示列显示类型和标记为主键的Product_Id。
我的问题出在我的扳机上。有两个触发器,有几个不同的触发器来处理不同的表。例如,音乐触发器执行以下语句:
INSERT INTO products
SET
Type=1,
Product_Id=NEW.Product_ID,
Title=NEW.Album,
Price=0books触发器是相同的,除了type=0和NEW.Album被NEW.Title替换。但是,当我现在运行INSERT查询时,在插入和删除了一些数据之后,我得到了一个重复的主键错误。问题是,MySQL数据库只将Product_ID列作为主键读取,因此当它试图在其中插入一个副本时,即使Type列中的值不同,它也会显示此错误。我被难住了。
products表
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)发布于 2012-11-23 13:45:21
看起来您忘记了删除产品中的行的触发器。如果您曾经更新过Books或Music中的数据,那么您还需要一个触发器来对产品进行相应的更改。
这就是你的问题,http://sqlfiddle.com/#!2/be9c93/1
下面是我如何修复它的http://sqlfiddle.com/#!2/2ff27/2
https://stackoverflow.com/questions/13523548
复制相似问题