5
我已經寫了一個觸發器,以便在對錶a執行操作之後向表b中插入一行。 出於某種原因,如果我在插入後添加此觸發器,然後插入一行,它將不起作用。但是,如果我將觸發器添加爲「更新後」,並且更新該行,則它可以工作。如果我使用'更新後'但不'後插入'MYSQL觸發器的作品?
這裏是觸發代碼。當我用'AFTER INSERT'替換'AFTER UPDATE',並進行插入時,當我插入一個新行時,沒有任何反應。在創建觸發器時我沒有遇到任何錯誤,而且我也沒有嘗試更新觸發器正在設置的同一個表。 任何幫助表示讚賞! 感謝, 仁
drop trigger if exists insertUndecided;
DELIMITER //
CREATE TRIGGER insertUndecided
AFTER UPDATE ON jiraissue
FOR EACH ROW
BEGIN
insert into nodeassociation (SOURCE_NODE_ID, SOURCE_NODE_ENTITY, SINK_NODE_ID, SINK_NODE_ENTITY, ASSOCIATION_TYPE, SEQUENCE)
select
NEW.id as SOURCE_NODE_ID,
'Issue' as SOURCE_NODE_ENTITY,
(select pv.id from projectversion pv
where pv.vname='undecided'
and pv.project=NEW.project) as SINK_NODE_ID,
'Version' as SINK_NODE_ENTITY,
'IssueFixVersion' as ASSOCIATION_TYPE,
NULL as SEQUENCE
from dual where exists
(select pkey from jiraissue
where id=NEW.id and id not in
(select distinct source_node_id from nodeassociation
where source_node_entity='Issue' and SINK_NODE_ENTITY='Version'
and ASSOCIATION_TYPE='IssueFixVersion'));
END;//
DELIMITER ;
看到這個答案,似乎也適用於你的情況,以及:http://stackoverflow.com/a/9097459/870122 – perissf 2012-02-10 08:08:12
嘗試重現這種行爲沒有觸發。執行SELECT語句。它會返回任何行嗎? – Devart 2012-02-10 08:23:02
@perissf - 感謝您的回覆。該問題是關於「在存儲的函數或觸發器中,不允許修改調用該函數或觸發器的語句已在使用(用於讀取或寫入)的表」。雖然我的確在閱讀jiraissue表,但我並沒有更新它。這並不能解釋爲什麼它似乎工作,如果我運行'後更新',但不是'後插入'? – jen 2012-02-10 17:28:19