0
嗨,那里我试图学习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 ;
,这是添加新的元组到项目表调用语句
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.
我会感激,如果你能帮助一个错误,感谢您的答复方式,通过面向。
但是第一种方式是合乎逻辑的吗?因为我想我应该给一个不是null的值,然后我必须将它更新为NULL? – quartaela