仅当table1中存在类似记录时才插入table2

时间:2013-08-20 12:42:30

标签: mysql pdo

我有2张不相似的表。只有在table2中找到具有类似值的记录时,才能通过某种方式将记录插入table1?我正在使用php pdomysql

完成所有这些操作

例如: 让我们说table1的值如下:

id
--
1
2
3
4
6

,然后

insert into table2 (id) values (3) // Will work, because id 3 exists in table1
insert into table2 (id) values (7) // Will not work, because id 7 does not exists in table1

现在,我这样做的方法是运行select count(id) where id = 3,然后如果存在id,则会插入它。繁琐!

有没有办法做到这一点,而不必先做select然后insert

由于这只是一个开始,如果需要添加foreign key等内容,我愿意做出更改。

此处运行的唯一查询是insert into table2 (id) values (3)。只有在id = 3中找到table1时才需要这样做。值3是用户提供的。

2 个答案:

答案 0 :(得分:1)

如果ID中的Table1是唯一的,那么这将有效:

INSERT INTO Table2 (ID)
  SELECT ID
  FROM Table1
  WHERE ID = 3;

如果ID=3中存在Table1,您将会插入一行。如果没有,则不会插入任何内容。

如果ID中的Table1不唯一,只需将DISTINCT添加到SELECT

INSERT INTO Table2 (ID)
  SELECT DISTINCT ID
  FROM Table1
  WHERE ID = 3;

答案 1 :(得分:0)

创建触发器

DELIMITER $$
CREATE
DEFINER = CURRENT_USER
TRIGGER `table2_check` BEFORE INSERT
ON table1
FOR EACH ROW BEGIN
if exists (select id from table1 where id = new.id) then
    insert into table2 (id) values (new.id);
end if;
END$$
DELIMITER ;