在一个表上插入TRIGGER之前,应该在另一个表上插入

时间:2013-02-19 07:02:47

标签: mysql sql triggers

我有两张表table1table2

fields of table1 - id and count
fields of table2 -  id and count

两个表都有相同的字段。现在我想在BEFORE INSERT TRIGGER上创建table1,它将检查if count = 2然后插入table2,否则在table1中。

我创建了触发器,但是当我触发此查询时..example-

insert into table1 (id, count) values (1323, 2);

然后将一行插入到table2中(这是我想要的),同样的行也插入到table1中。

我希望在table1或table中插入行,而不是在两个表中。

我的目标是什么?

2 个答案:

答案 0 :(得分:0)

试试这个:

delimiter $$
CREATE TRIGGER myTrigger
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
IF NEW.count = 2 THEN
insert into table2 (id, count) values (New.id,New.Count);
ELSE
<<no action>>
END IF;
END$$

答案 1 :(得分:0)

我不确定你为什么要这样,所以我怀疑我可能会就某种解决方案给出建议,这些解决方案应该以不同的方式修复,但是我们走了。

正如您所见in this question here,不可能整齐地停止插入。您可以尝试发错,这样您就不会插入,但我认为这真的很痛苦。

你可以做的是制作一个假表dummytable并将你的插入触发器放在那里。您的行将始终插入虚拟表中,但您可以根据自己的意愿将其插入table1table2。触发器的肉看起来像

IF NEW.count = 2 THEN
INSERT INTO table2 (id, count) VALUES (New.id,New.Count);
ELSE
INSERT INTO table2 (id, count) VALUES (New.id,New.Count);
END IF;

你必须时不时地清理假人。