内部联接的mysql触发器

时间:2015-09-15 19:54:22

标签: mysql join

我在mysql数据库中有3个表链接到我的问题跟踪器。 表格是:

create TRIGGER save_Assignee AFTER INSERT ON changeitem
FOR EACH ROW 
BEGIN 
SET new.assignee=(select assignee from jiraissue INNER JOIN changegroup ON jiraissue.ID=changegroup.issueid)
END

如果发生任何变化,例如更改身份或发出受让人的问题, table change_group将有新的记录。一个goupid与change_item表中的一个或多个记录匹配。例如,在group_id上可以保存问题的状态和受让人的更改: 现在 根据不断变化的问题受让人我在问题表中添加了一个带有受让人姓名的列,我希望有一个触发器,当发生更改时保存assigee字段的快照。我试过这个:

grails test-app MessageServiceSpec

似乎我不能同时使用触发器进行内部连接。

如果有人对此有任何想法,我将不胜感激。感谢

MINA

2 个答案:

答案 0 :(得分:0)

表"问题"

id | Issue_name |受让人

11 | R& D |用户1

table" changegroup"

id | issue_ID | CREATED_TIME

12 | 11 | 2015/2/2 16:40

table" change_item"

id | group_id |领域|旧字符串|新字符串

13 | 12 |状态|做|正在进行中

我希望有一个触发器可以在问题发生变化时保存谁是受让人?

答案 1 :(得分:0)

你想要之前插入触发器,而不是之后插入触发器:

create TRIGGER save_Assignee BEFORE INSERT ON changeitem
FOR EACH ROW 
BEGIN 
SET new.assignee=(select assignee from jiraissue INNER JOIN changegroup ON jiraissue.ID = changegroup.issueid)
END

我也怀疑你的子查询是错的。它可能返回太多行,因为它需要引用new。但是,这不是你的问题。如果您确定存在此类问题,请提出另一个问题,包括样本数据和所需结果。