sql >> Database teknologi >  >> RDS >> Mysql

Tjek, om der findes værdier, før INDSÆT I ... PÅ DUBLIKAT NØLEOPDATERING

I stedet for review_autosave_data du kan oprette to tabeller som review_insert_drafts og review_update_drafts (én til nye anmeldelser og én til anmeldelsesopdateringer).

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`)
);

(Ikke sikker på hvad name er kolonne er god til.)

I din ansøgning skal du tjekke, om brugeren skriver en ny anmeldelse eller opdaterer en eksisterende.

For nye anmeldelser, du kører:

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

eller

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

For anmeldelsesopdateringer, du kører:

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

eller

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

Fordele:Du har et klart design med tydelige unikke nøgler og fremmednøgler.

Ulemper:Du har to tabeller, der indeholder lignende data. Så du har to forskellige indsæt-sætninger. Og du skal bruge en UNION-erklæring, hvis du vil kombinere de to tabeller (f.eks. vise alle kladder for en bruger).



  1. MySQL-indekser - hvad er den bedste praksis?

  2. Kan ikke bruge en MySQL-forbindelse til entity framework 6

  3. Maksimal længde af et tabelnavn i MySQL

  4. MySQL langsom forespørgselslog logføring af hurtige forespørgsler