Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapobiegaj automatycznemu przyrostowi w przypadku duplikatu wstawiania MySQL

Możesz zmodyfikować swoją WSTAWKĘ tak, aby wyglądała mniej więcej tak:

INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
    SELECT tag
    FROM tablename
    WHERE tag = $tag
)
LIMIT 1

Gdzie $tag to tag (odpowiednio cytowany lub oczywiście jako symbol zastępczy), który chcesz dodać, jeśli jeszcze go tam nie ma. To podejście nie spowoduje nawet wywołania INSERT (i późniejszej automatycznej inkrementacji marnotrawstwa), jeśli tag już tam jest. Prawdopodobnie mógłbyś wymyślić ładniejszy SQL, ale powyższe powinno wystarczyć.

Jeśli twoja tabela jest poprawnie zindeksowana, wtedy dodatkowy SELECT do sprawdzenia istnienia będzie szybki, a baza danych i tak będzie musiała to sprawdzić.

To podejście nie zadziała jednak w przypadku pierwszego tagu. Możesz zainicjować swoją tabelę tagów tagiem, który Twoim zdaniem zawsze będzie używany, lub możesz osobno sprawdzić pustą tabelę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać rekordy z ostatnich 10 minut w MySQL?

  2. Korzystanie z trwałych połączeń PHP-MySQL do prowadzenia bloga WordPress

  3. Funkcja MySQL CEILING() — zaokrąglanie w górę do najbliższej liczby całkowitej

  4. Jak dołączyć zmienną PHP do instrukcji MySQL?

  5. Błąd zapytania SQL MySQL w WordPressie w klasie WPDB