2012-07-22 38 views
2

我以前沒有太多的數據庫工作,但我明白了一些基本知識。現在,我有兩個表,我們將調用表1和表2.我試圖創建一個觸發器,以便當我將數據插入到表1中時,它會觸發觸發器以獲取col1的所有不同值表1,我想用它來插入表2.隨着更多的數據被添加到表1中,無疑會出現重複。如果發生重複,我不希望將重複插入到表2中。因此,我認爲我可以使用聯合來提取唯一值並將它們插入到表2中,但在聯盟之後,我並不完全確定去做。我爲這種想法瘋狂嗎?有辦法做得更好嗎?MySQL插入從工會獨特

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中的唯一值,但其中一些唯一值可能已經存在。

回答

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 ; 
+0

所以,如果我設置主鍵列在第1的實際價值,我可以插入值到表,只是忽略錯誤,如果它出現並繼續前進? – DavisTasar 2012-07-22 18:12:56

+0

是的,這就是'IGNORE'所做的,它忽略了將值插入PRIMARY或UNIQUE鍵(如果鍵中已經存在該值)的嘗試。 – 2012-07-22 18:32:58

+0

夠公平的,我會給你一個鏡頭。謝謝! – DavisTasar 2012-07-22 21:13:49