Napisałem spust, aby wstawić wiersz do tabeli b po operacji na tabeli a. Z jakiegoś powodu nie ma żadnego efektu, jeśli dodaję ten argument "po wstawieniu", a następnie wstaw wiersz. Jednak działa, jeśli dodaję wyzwalacz jako "po aktualizacji" i zaktualizuję wiersz.Wyzwalacz MYSQL działa, jeśli używam "po aktualizacji", ale nie "po wstawieniu"?
Oto kod aktywacyjny. Kiedy zastępuję "PO AKTUALIZACJI" słowem "PO WSTAWIE" i robię wstawkę, nic się nie dzieje po wstawieniu nowego wiersza. Nie otrzymuję żadnych błędów podczas tworzenia wyzwalacza i nie próbuję aktualizować tej samej tabeli, dla której wyzwalacz jest ustawiony. Każda pomoc jest doceniana! Dzięki, Jen
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 ;
Zobacz tę odpowiedź, która wydaje się mieć zastosowanie w danej sytuacji, a także: http://stackoverflow.com/a/9097459/870122 – perissf
Spróbuj odtworzyć ten problem bez spustu. Wykonaj instrukcję SELECT. Czy zwróci wszystkie wiersze? – Devart
@perissf - dzięki za odpowiedź. problem dotyczy "W funkcji zapisanej lub wyzwalającej, nie wolno modyfikować tabeli, która jest już używana (do odczytu lub zapisu) przez instrukcję, która wywołała funkcję lub wyzwalacz". Chociaż rzeczywiście czytam tabelę jiraissue, nie aktualizuję jej. I to nie wyjaśnia, dlaczego wydaje się działać, jeśli uruchomię go po "AKTUALIZACJI", ale nie "PO WSTAWIE"? – jen