Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Sisipkan Dimana Tidak Ada-Tanpa Kunci Utama

Jika Anda benar-benar ingin menulis kueri (berfungsi) Anda sendiri..

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
)

... tetapi MySQL dapat menangani semua ini untuk Anda!

Anda tidak memerlukan kunci utama untuk membuat MySQL menangani ini untuk Anda, Anda harus menambahkan UNIQUE batasan kunci pada kumpulan gabungan dari dua kolom.

Permintaan untuk menambahkan kunci unik dent_group_uniq_key ke groupdentlink .

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

Kemudian gunakan INSERT IGNORE pada permintaan Anda:

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

INSERT IGNORE akan mencoba menyisipkan baris ke tabel Anda, jika gagal karena kendala kunci, itu akan bertindak seperti tidak terjadi apa-apa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan fatal Wordpress:Kesalahan Tidak Tertangkap:Panggilan ke fungsi yang tidak ditentukan mysql_connect() di /wp-includes/wp-db.php:1570

  2. Dapatkan id kenaikan otomatis yang terakhir dimasukkan di mysql

  3. Apakah LAST_INSERT_ID() dalam transaksi dapat diandalkan?

  4. Server MySQL telah hilang dengan Ruby on Rails

  5. Bagaimana cara memilih baris pertama untuk setiap grup di MySQL?