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

MySQL вмъкване при дублирана актуализация за не-PRIMARY ключ

Имате нужда от заявка, която проверява дали съществува ред с вашия record_id (или person_id). Ако съществува, актуализирайте го, в противен случай поставете нов ред

IF EXISTS (SELECT * FROM table.person WHERE record_id='SomeValue')
    UPDATE table.person 
    SET some_text='new_some_text', some_other_text='some_other_text' 
    WHERE record_id='old_record_id'
ELSE
    INSERT INTO table.person (record_id, person_id, some_text, some_other_text) 
    VALUES ('new_record_id', 'new_person_id', 'new_some_text', 'new_some_other_text')

Друг по-добър подход е

UPDATE table.person SET (...) WHERE person_id='SomeValue'
IF ROW_COUNT()=0
    INSERT INTO table.person (...) VALUES (...)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. QSqlDatabase open винаги връща true след актуализиране

  2. премахване на информация от таблицата на mysql, когато потребителят затвори своя браузър

  3. неинициализирана константа MysqlCompat::MysqlRes (с помощта на mms2r gem)

  4. Как да напиша (MySQL) LIMIT в SQL Server?

  5. Пълнотекстова заявка с единична кавичка