2

我以前没有过多地使用数据库,但我了解一些基础知识。现在,我有两个表,我们将调用表 1 和表 2。我正在尝试创建一个触发器,以便当我将数据插入表 1 时,它会触发触发器以获取 col1 的所有不同值表 1,我想用它来插入表 2。随着更多数据被添加到表 1 中,毫无疑问会出现重复。如果发生重复,我不希望将重复插入表 2。所以,我想我可能会使用联合来提取唯一值并将它们插入表 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,在插入时触发启动以从表 1 Col 1 和表 2 Col 1 中获取唯一值,以尝试获取所有唯一值,然后我想将唯一值插入表 2 Col 1 ,但其中一些唯一值可能已经存在。

4

1 回答 1

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 ;
于 2012-07-22T17:51:06.320 回答