Tôi đã viết trình kích hoạt để chèn một hàng vào bảng b sau một thao tác trên bảng a. Vì lý do nào đó, nó không có tác dụng nếu tôi thêm trình kích hoạt này 'sau khi chèn' và sau đó chèn một hàng. Tuy nhiên, nó hoạt động nếu tôi thêm trình kích hoạt là 'sau khi cập nhật' và cập nhật hàng.Trình kích hoạt MYSQL hoạt động nếu tôi sử dụng 'sau khi cập nhật' nhưng không hoạt động 'sau khi chèn'?
Đây là mã kích hoạt. Khi tôi thay thế 'SAU KHI CẬP NHẬT' với 'SAU CH INSN', và thực hiện chèn, thì không có gì xảy ra khi tôi chèn một hàng mới. Tôi không nhận được lỗi khi tạo trình kích hoạt và tôi không cố gắng cập nhật cùng một bảng mà trình kích hoạt đang được đặt. Bất kỳ trợ giúp nào được đánh giá cao! cảm ơn, 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 ;
Xem câu trả lời này dường như cũng áp dụng cho trường hợp của bạn: http://stackoverflow.com/a/9097459/870122 – perissf
Cố gắng tái tạo hành vi này mà không cần kích hoạt. Thực hiện câu lệnh SELECT. Nó sẽ trả về bất kỳ hàng nào? – Devart
@perissf - cảm ơn câu trả lời của bạn. vấn đề đó liên quan đến "Trong một hàm hoặc trình kích hoạt được lưu trữ, nó không được phép sửa đổi một bảng đã được sử dụng (để đọc hoặc viết) bằng câu lệnh đã gọi hàm hoặc trình kích hoạt." Trong khi tôi thực sự đọc bảng jiraissue, tôi không cập nhật nó. Và điều đó không giải thích tại sao nó có vẻ hoạt động nếu tôi chạy nó 'SAU KHI CẬP NHẬT', nhưng không phải 'SAU CH INSN'? – jen