Întrebări dificile în inserarea ignorării mysql, la actualizarea cheii duplicate

În MySQL există destule funcții și caracteristici încorporate care simplifică codul. Din păcate, nu toți programatorii știu despre acest lucru și folosesc "bicicletele" lor.

ON UPDATE KEY DUPLICATE

De exemplu, există un tabel cu unele obiecte (utilizatori, postări etc.). Dacă un obiect dat cu o astfel de proprietate unică există deja, atunci un atribut are o proprietate cu el. Dacă obiectul nu există, introduceți o nouă linie. Puteți găsi adesea acest cod:

// găsiți obiectul
$ row = interogare ('SELECT * FROM table WHERE id = 1');
// verificați dacă există un astfel de obiect
dacă ($ row) // faceți o actualizare
interogare ('tabelul UPDATE SET coloana = coloana + 1 WHERE id = 1');
>
altfel // introduceți
interogare ('INSERT INTO tabela SET coloana = 1, id = 1');
>

O astfel de construcție poate fi înlocuită cu o singură interogare fără participarea php. dacă există o cheie primară sau unică pe câmpul ID:
INSERTAȚI ÎN tabel SET coloana = 1, id = 1 ON DUPLICATE KEY UPDATE coloana = coloana + 1

INSERTA IGNORE

Adesea atunci când adăugați la un tabel care are un index UNIQUE sau KEY PRIMARY. noua linie, sintaxa INSERT IGNORE este foarte utilă. Utilizarea acestei sintaxe este convenabilă în cazul duplicării accidentale a cheii la inserare, adică inserția însăși nu va fi executată și execuția nu va fi terminată.
Algoritmul obișnuit:
1) verificați prezența unui rând în tabel cu ajutorul tastei (SELECT)
2) introduceți o linie dacă nu există nici o cheie dublă (INSERT)

// găsiți obiectul
$ row = interogare ('SELECT * FROM table WHERE id = 1');
// dacă nu există un astfel de obiect, introduceți apoi o nouă înregistrare
dacă interogarea (! $ row) ('INSERT INTO table ...');
>
Acum vom scrie o singură cerere INSERT IGNORE fără php
interogare ('INSERT IGNORE INTO table ...') // inserați

Nu aveți nevoie să inventați propriile algoritmi și să scrieți cod suplimentar - să gândiți MySQL pentru dvs.