首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触发器和多列主键

触发器和多列主键
EN

Stack Overflow用户
提问于 2012-11-23 13:28:27
回答 1查看 751关注 0票数 0

我有一张书桌和一张音乐桌。这两个表都有一个Product_ID作为它们的主键。在phpMyAdmin中,这两列带有下划线,并且表的显示列显示类型和标记为主键的Product_Id。

我的问题出在我的扳机上。有两个触发器,有几个不同的触发器来处理不同的表。例如,音乐触发器执行以下语句:

代码语言:javascript
复制
 INSERT INTO products 
 SET 
      Type=1, 
      Product_Id=NEW.Product_ID,
      Title=NEW.Album, 
      Price=0

books触发器是相同的,除了type=0和NEW.Album被NEW.Title替换。但是,当我现在运行INSERT查询时,在插入和删除了一些数据之后,我得到了一个重复的主键错误。问题是,MySQL数据库只将Product_ID列作为主键读取,因此当它试图在其中插入一个副本时,即使Type列中的值不同,它也会显示此错误。我被难住了。

products表

代码语言:javascript
复制
Product_Id  int(11) - PK
Title   int(11)
Price   double
Type    int(11) - PK
NewBool tinyint(1)

音乐桌

代码语言:javascript
复制
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)

书桌

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 13:45:21

看起来您忘记了删除产品中的行的触发器。如果您曾经更新过Books或Music中的数据,那么您还需要一个触发器来对产品进行相应的更改。

这就是你的问题,http://sqlfiddle.com/#!2/be9c93/1

下面是我如何修复它的http://sqlfiddle.com/#!2/2ff27/2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13523548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档