创建一个触发器,通过在 table B 中插入值来记录对 table A 的修改
Creating a trigger that records modifications on table A by inserting values in table B
我在使用以下触发器时遇到问题,该触发器记录了在 table A 上插入属性 'numero'= 4 并插入进行修改的 table B以及 table 中属性 'numero'= 4 的条目数 A. 问题似乎是 select * 计数,但我无法弄清楚。任何帮助将不胜感激!
DELIMITER $
CREATE TRIGGER t_BI
AFTER INSERT ON A
FOR EACH ROW
BEGIN
IF NEW.numero=4 THEN
INSERT INTO B(name,nbLoc)
VALUE(CURRENT_USER(),SELECT COUNT(*) FROM A WHERE numero = 4);
END IF;
END
$
DELIMITER ;
首先尝试将计数值存储在变量中,然后在 INSERT
中使用该变量
DELIMITER $
CREATE TRIGGER t_BI
AFTER INSERT ON A
FOR EACH ROW
BEGIN
DECLARE cnt INT;
IF NEW.numero=4 THEN
SET cnt = ( SELECT COUNT(*) FROM A WHERE numero = 4) ;
INSERT INTO B(name,nbLoc)
VALUE(CURRENT_USER(), cnt);
END IF;
END
$
DELIMITER ;
我在使用以下触发器时遇到问题,该触发器记录了在 table A 上插入属性 'numero'= 4 并插入进行修改的 table B以及 table 中属性 'numero'= 4 的条目数 A. 问题似乎是 select * 计数,但我无法弄清楚。任何帮助将不胜感激!
DELIMITER $
CREATE TRIGGER t_BI
AFTER INSERT ON A
FOR EACH ROW
BEGIN
IF NEW.numero=4 THEN
INSERT INTO B(name,nbLoc)
VALUE(CURRENT_USER(),SELECT COUNT(*) FROM A WHERE numero = 4);
END IF;
END
$
DELIMITER ;
首先尝试将计数值存储在变量中,然后在 INSERT
中使用该变量DELIMITER $
CREATE TRIGGER t_BI
AFTER INSERT ON A
FOR EACH ROW
BEGIN
DECLARE cnt INT;
IF NEW.numero=4 THEN
SET cnt = ( SELECT COUNT(*) FROM A WHERE numero = 4) ;
INSERT INTO B(name,nbLoc)
VALUE(CURRENT_USER(), cnt);
END IF;
END
$
DELIMITER ;