我之前没有使用过很多数据库,但我理解了一些基础知识。现在,我有两个表,我们将调用表1和表2.我正在尝试创建一个触发器,这样当我将数据插入表1时,它会触发触发器以获取col1的所有不同值表1,我想用它来插入表2.随着更多数据被添加到表1中,毫无疑问会出现重复数据。如果发生重复,我不希望将重复插入到表2中。所以,我认为我可能会使用Union来提取唯一值并将它们插入表2中,但是在联盟之后我不完全确定是什么去做。我是否因为这样思考而疯狂,并且有办法更好地做到这一点?
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,触发器在insert上启动以获取表1 Col 1和表2 Col 1中的唯一值以尝试获取所有唯一值,然后我想将唯一值插入表中2 Col 1,但其中一些独特的值可能已经存在。
答案 0 :(得分:2)
假设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 ;