我以前没怎么接触过数据库,但我了解一些基础知识。现在,我有两个表,我们将调用表 1 和表 2。我正在尝试创建一个触发器,以便当我将数据插入表 1 时,它会触发触发器以获取 col1 中的所有不同值表 1,我想用它插入表 2。随着更多数据添加到表 1,毫无疑问会出现重复。如果发生重复,我不希望将重复插入到表 2 中。因此,我认为我可以使用 Union 来提取唯一值并将它们插入到表 2 中,但在 Union 之后我不完全确定会发生什么去做。我这样想是不是疯了?有办法做得更好吗?
DELIMITER //
CREATE TRIGGER testdb
AFTER INSERT ON testdb.table1
FOR EACH ROW
BEGIN
SELECT col1 FROM table1
UNION
SELECT col1 FROM table2
(I imagine the insert statement would go here)
END //
DELIMITER ;
简而言之,数据进入表 1,插入时启动触发器以从表 1 第 1 列和表 2 第 1 列获取唯一值,尝试获取所有唯一值,然后我想将唯一值插入到表中2 第 1 栏,但其中一些唯一值可能已经存在。
最佳答案
假设table2
定义为
CREATE TABLE table2 (col1 ..., PRIMARY KEY(col1));
你可以这样做:
DELIMITER //
CREATE TRIGGER testdb
AFTER INSERT ON testdb.table1
FOR EACH ROW
BEGIN
INSERT IGNORE INTO table2 SET col1 = NEW.col1;
END //
DELIMITER ;
关于MySQL 从联合中插入唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11602573/