2

私はトリガーを初めて使用し、「1 つのテーブルに対して同じアクション時間とイベントを持つ複数のトリガー」エラーが発生しています。

AFTER Update と AFTER Delete を作成しましたが、これらは 2 つの別個のアクション時間/イベントであるため、なぜエラーが発生するのかよくわかりません。

これが私のクエリです:

CREATE TRIGGER `new_enrolment` AFTER INSERT ON `mdl_user_enrolments` FOR EACH ROW BEGIN
INSERT INTO c_master (
ud,
firstname,
lastname,
email,
username,
cid,
course
)
SELECT 
mdl_user.id AS uid, 
mdl_user.firstname, 
mdl_user.lastname, 
mdl_user.email, 
mdl_user.suspended, 
mdl_user.username, 
mdl_enrol.courseid AS cid,
mdl_course.fullname AS course
FROM mdl_user_enrolments INNER JOIN mdl_enrol ON mdl_user_enrolments.enrolid = mdl_enrol.id
 INNER JOIN mdl_course ON mdl_enrol.courseid = mdl_course.id
 INNER JOIN mdl_user ON mdl_user.id = mdl_user_enrolments.userid
WHERE userid = NEW.userid;
END;

CREATE TRIGGER `remove_enrolment` AFTER DELETE ON `mdl_user_enrolments` FOR EACH ROW BEGIN
SELECT mdl_enrol.courseid, 
mdl_user_enrolments.userid, 
mdl_user_enrolments.enrolid
FROM mdl_user_enrolments INNER JOIN mdl_enrol ON mdl_user_enrolments.enrolid = mdl_enrol.id
WHERE mdl_user_enrolments.enrolid = OLD.enrolid

DELETE FROM c_master
WHERE uid = OLD.userid AND mdl_enrol.courseid;
END;

私はこれらすべてに慣れていないので、おそらく簡単なものが欠けています。

4

1 に答える 1

4

ブライアン、おそらくあなたは同じトリガーをテーブルに数回追加したり削除したりしていて、もう一度作成する前に最後に削除するのを忘れていたのでしょう。を使用して再度作成する前に、削除したことを確認してください

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

その後

CREATE TRIGGER ....

ドキュメンテーションはこちら

于 2013-06-25T23:58:20.977 に答える