こんにちは、mysql を学習しようとしていますが、テーブル内の列に対する更新操作の後に動作するトリガーを定義した後、正しく動作しません。この列を更新するたびに、行を即座に削除する必要があります(この列の型はDATEで、最初にNULLに宣言されています)。これは私のテーブルの構造です
Create Table Projects (
pro_ID INT NOT NULL,
pro_Name VARCHAR(150) NOT NULL,
comp_date_info DATE DEFAULT NULL,
PRIMARY KEY(pro_ID)
);
ストアドプロシージャでタプルを追加しようとしています
DELIMITER //
CREATE PROCEDURE insert_into_Projects ( IN projectID INT, IN projectName VARCHAR(50) )
BEGIN
INSERT INTO homework.Projects values (projectID, projectName,NULL);
END //
DELIMITER ;
これは、Projects テーブルに新しいタプルを追加するための呼び出しステートメントです。
call insert_into_Projects(111,'Project Mayhem');
これまでのところ、お気づきのように、次のようなタプルがあります
pro_ID pro_Name comp_date_info
1) 111 Project Mayhem NULL
これがトリガーの実装です
DELIMITER //
CREATE TRIGGER after_Projects_update
AFTER UPDATE ON homework.Projects
FOR EACH ROW
BEGIN
delete from homework.Projects
where comp_date_info != NULL;
END //
DELIMITER ;
最後に、このタプルの comp_date_info を適切な日付値に更新するたびに、トリガーを削除する必要があります。
update homework.Projects
set comp_date_info = '1989-04-05'
where pro_ID = 113;
しかし、私は言うエラーに直面しています
Error Code: 1442. Can't update table 'Projects' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
お役に立てれば幸いです。また、ご返信いただきありがとうございます。