2

これまでデータベースをあまり扱ったことがありませんが、基本的なことは少し理解しています。現在、2 つのテーブルがあります。テーブル 1 とテーブル 2 と呼びます。データをテーブル 1 に挿入すると、トリガーを起動して、col1 のすべての個別の値を取得するトリガーを作成しようとしています。表 1 を使用して、表 2 に挿入します。表 1 にデータが追加されると、間違いなく重複が発生します。重複が発生した場合、テーブル 2 に重複を挿入したくありません。そのため、Union を使用して一意の値を取得し、それらを Table 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 に挿入します。 、ただし、これらの一意の値の一部は既に存在している可能性があります。

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 に答える