我是一名正在学习MySQL的学生,目前在使用Trigger检查插页时遇到了麻烦。
我有以下表类
CREATE TABLE classes
(Class CHAR(15) PRIMARY KEY,
cType CHAR(2) NOT NULL,
Country VARCHAR(12) NOT NULL,
numGuns INT(2) NOT NULL,
Bore INT(2) NOT NULL,
Displacement INT(6) NOT NULL);
这个问题要求我在这个数据库上编写以下基于属性的检查:
我的触发器目前看起来像这样
delimiter $$
CREATE TRIGGER chkGun
BEFORE INSERT ON classes
FOR EACH ROW
BEGIN
IF NEW.numGuns >= 8 AND NEW.numGuns <= 12 THEN
UPDATE classes
SET numGuns = NEW.numGuns;
ELSE
SET NEW.numGuns = NULL;
END IF;
END$$
DELIMITER ;
我一直收到错误消息
Error Code: 1442. Can't update table 'classes' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我从上面的错误消息中得知,我无法更新触发器当前使用的同一个表 无论如何都要更新同一个表中的属性吗?
答案 0 :(得分:0)
如果枪支数量正确,请不要进行更新,只是让它通过。如果枪支数太低或太高,则将其设置为空。
触发器在正常更新之前触发,您对NEW。*所做的任何更改都将被写入。