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

Periksa apakah ada nilai sebelum INSERT INTO ... ON DUPLICATE KEY UPDATE

Alih-alih review_autosave_data anda dapat membuat dua tabel seperti review_insert_drafts dan review_update_drafts (satu untuk ulasan baru dan satu untuk pembaruan ulasan).

CREATE TABLE `review_insert_drafts` (
  `product_id` int(11) unsigned NOT NULL,
  `user_id` int(11) unsigned NOT NULL,
  `review` blob,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`product_id`, `user_id`),
  CONSTRAINT FOREIGN KEY (`product_id`) REFERENCES `products` (`id`),
  CONSTRAINT FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
);

CREATE TABLE `review_update_drafts` (
  `review_id` int(11) unsigned NOT NULL,
  `review` blob,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`review_id`),
  CONSTRAINT FOREIGN KEY (`review_id`) REFERENCES `reviews` (`id`)
);

(Tidak yakin apa name kolom baik untuk.)

Dalam aplikasi Anda, Anda harus memeriksa apakah pengguna menulis ulasan baru atau memperbarui yang sudah ada.

Untuk ulasan baru yang Anda jalankan:

INSERT INTO review_insert_drafts (product_id, user_id, review)
VALUES (50, 1, "lorem ipsum")
ON DUPLICATE KEY
UPDATE review = "lorem ipsum";

atau

REPLACE INTO review_insert_drafts (product_id, user_id, review)
VALUES (50, 1, "lorem ipsum");

Untuk pembaruan ulasan yang Anda jalankan:

INSERT INTO review_update_drafts (review_id, review)
VALUES (25, "lorem ipsum")
ON DUPLICATE KEY
UPDATE review = "lorem ipsum";

atau

REPLACE INTO review_update_drafts (review_id, review)
VALUES (25, "lorem ipsum");

Keuntungan:Anda memiliki desain yang jelas dengan kunci unik dan kunci asing yang jelas.

Kekurangan:Anda memiliki dua tabel yang berisi data serupa. Jadi, Anda memiliki dua pernyataan penyisipan yang berbeda. Dan Anda akan memerlukan pernyataan UNION jika Anda ingin menggabungkan dua tabel (misalnya, tampilkan semua draf untuk pengguna).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. masalah dalam banyak ke banyak hubungan

  2. Kesalahan SQL:1054, SQLState:42S22 Kolom tidak dikenal dalam kesalahan 'daftar bidang' Kesalahan Java Spring Boot Mysql

  3. Bagaimana Anda bergabung di tabel yang sama, dua kali, di mysql?

  4. php mengembalikan properti yang tidak ditentukan

  5. Bisakah MySQL mengganti banyak karakter?