sql >> データベース >  >> RDS >> Mysql

MySql-重複キー挿入時

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

    これを実現するための2つのカスタム/代替方法:

    1. stored procedureを使用する この質問に対する受け入れられた回答に概説されているように:MySQL ONDUPLICATEKEYを監査またはログテーブルに挿入

    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;
    


    1. PHP / MySQLでの地理検索(距離)(パフォーマンス)

    2. Moodleを使用してユーザーを作成し、SQLを介してコースに登録します

    3. 2つの日付の間のデータを選択しますか?

    4. Terraformを使用したMySQL/MariaDBVaultデータベースシークレットエンジンのプロビジョニング