Mysql
 sql >> база данни >  >> RDS >> Mysql

Предотвратяване на автоматично увеличение на MySQL дубликат вмъкване

Можете да промените вашия INSERT да бъде нещо подобно:

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

Където $tag е маркерът (правилно цитиран или като заместител, разбира се), който искате да добавите, ако все още не е там. Този подход дори няма да задейства INSERT (и последващото загуба на автоматично увеличение), ако маркерът вече е там. Вероятно бихте могли да измислите по-хубав SQL от този, но горното трябва да свърши работа.

Ако таблицата ви е правилно индексирана, допълнителната SELECT за проверка на съществуването ще бъде бърза и базата данни все пак ще трябва да извърши тази проверка.

Този подход обаче няма да работи за първия маркер. Можете да заредите вашата таблица с маркери с маркер, който смятате, че винаги ще бъде използван, или бихте могли да направите отделна проверка за празна таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въведение в SQL Joins

  2. Експортирайте и импортирайте всички MySQL бази данни наведнъж

  3. MySQL Workbench:Грешка в заявката (1064):Синтактична грешка близо до „VISIBLE“ на ред 1

  4. MySQL - игнориране на грешка при вмъкване:дублиран запис

  5. Как да върнете позицията на елемент от списък в MySQL