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

存在しない場所に挿入-主キーなし

    本当に独自の(機能する)クエリを作成したい場合は..

    INSERT INTO groupdentlink (
      f_dent_id, f_group_id, f_schedule_id
    ) SELECT 
        '$_POST[id]'  f_dent_id, 
        '$groupid'    f_group_id,
        '$scheduleid' f_schedule_id
    FROM DUAL
    WHERE NOT EXISTS (
      SELECT 1
      FROM `groupdentlink`
      WHERE 
        f_dent_id = '$_POST[id]' AND f_group_id = '$groupid'
      LIMIT 1 -- will stop mysql to stop searching after first match
    )
    

    ...しかし、MySQLはこれをすべて処理できます!

    MySQLでこれを処理するために主キーは必要ありません。UNIQUEを追加する必要があります 2つの列の組み合わせセットに対するキー制約。

    一意のキーdent_group_uniq_keyを追加するためのクエリ groupdentlinkへ 。

    ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
      f_dent_id, f_group_id
    );
    

    次に、INSERT IGNOREを使用します クエリについて:

    INSERT IGNORE INTO groupdentlink (
      f_dent_id, f_group_id, f_schedule_id
    ) VALUES (
      '$_POST[id]', '$groupid', '$scheduleid'
    )
    

    INSERT IGNORE テーブルに行を挿入しようとしますが、キーの制約が原因で失敗した場合は、何も起こらないように動作します。



    1. SQLServerで実行プランを生成する方法

    2. Oracle番号からC#10進数

    3. インメモリデータベースを備えたレール

    4. 条件付き一意制約