我想在Mysql中创建一个触发器。 在插入之前和更新之前,仅在其他表中存在ID时才插入值。
这是我的触发器(在插入之前),该触发器不起作用:
DELIMITER $$
CREATE TRIGGER
`before_insert_id`
BEFORE INSERT ON
`table2`
FOR EACH ROW
BEGIN
DECLARE msg VARCHAR(255);
IF NEW.id =
( SELECT id
FROM table2
WHERE NEW.id not in (select id from table1)
)
THEN
SET msg = 'id not in table1';
SIGNAL SQLSTATE '45002' SET message_text = msg ;
END IF ;
END ;
$$
DELIMITER ;
我们还应该在if语句通过之后在table2内插入值吗?还是仅用于检查?
答案 0 :(得分:2)
如果不存在(从table1中选择*,其中id = new.id),然后设置msg ='id not in table1'信号...如果存在,则会自动插入数据。
答案 1 :(得分:0)
...仅在另一个表中存在ID时才插入值。
听起来您只需要一个外键约束,而不是触发器。
ALTER TABLE table2 ADD FOREIGN KEY (id) REFERENCES table1(id);
如果尝试插入表1中不的id
行,则会引发错误。
不需要触发器。