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

Wstawka MySQL przy zduplikowanej aktualizacji dla klucza innego niż PODSTAWOWY

Potrzebujesz zapytania, które sprawdza, czy istnieje jakikolwiek wiersz z Tobą record_id (lub person_id). Jeśli istnieje, zaktualizuj go, w przeciwnym razie wstaw nowy wiersz

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')

Innym lepszym podejściem jest

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. Policz wystąpienia na podstawie kilku warunków dla dwóch tabel

  2. Chcę, aby wyzwalacz DELETE z 2 tabel w MySQL

  3. Railsy:Jak podzielić zapytanie zapisu/odczytu na bazę danych master/slave

  4. Wartości inicjujące MySQL RAND() prawie się powtarzają

  5. Implementacja funkcji mieszającej MySQL