8

INSERT IGNOREとが存在することを理解していますINSERT ... ON DUPLICATE KEY UPDATE。ただし、重複キーがある場合は、INSERT侵害された一意のキーの記録を保持するために一時テーブルに対して a を実行して、ユーザーに出力できるようにしたいと考えています。

私ができる方法はありますON DUPLICATE INSERTか?それが役立つ場合は、一括挿入を試みています。

4

2 に答える 2

8

ではON DUPLICATE KEY UPDATE、別のテーブルに挿入することはできません。また、使用できる代替機能もありません。

これを実現できる 2 つのカスタム/代替方法:

  1. stored procedureこの質問に対する受け入れられた回答で概説されているように使用: MySQL ON DUPLICATE KEY insert into an audit or log table

  2. triggerテーブルのすべてINSERTを別のテーブルに記録する を作成し、 「ログ」でいっぱいのテーブルに重複がないか問い合わせます。

これに似たものが機能するはずです:

CREATE TABLE insert_logs (
    id int not null
);

delimiter |
CREATE TRIGGER insert_logs_trigger BEFORE INSERT ON your_table
    FOR EACH ROW BEGIN
        INSERT INTO insert_logs SET id = NEW.id;
    END;
|

テーブル内の重複のリストを取得するには、次のようにします。

SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;
于 2012-08-13T19:07:55.930 に答える