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

Potrzebne przenośne rozwiązanie SQL upsert (insert+update)

Jedynym rozwiązaniem całkowicie niezależnym od bazy danych, korzystającym z nieco nowoczesnych baz danych, jest wywołanie aktualizacji, a następnie wstawienia w dwóch operacjach. Niektóre bazy danych nie pozwalają na wysyłanie wielu instrukcji w jednej operacji, a niektóre bazy danych mogą nie zwracać liczby wierszy, których dotyczy aktualizacja, więc nie będę na tym polegać.

Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';

(oddzielne połączenie)

Insert Into MyTable(KeyCol, Data)
Select 'key', 'Data'
From ( Select 1 As Value ) As Z
Where Not Exists    (
                    Select 1
                    From MyTable As T1
                    Where T1.KeyCol = 'key'
                    );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dane php z bazy danych nie są wyświetlane po wyszukiwaniu

  2. Jak pogrupować według identyfikatora użytkownika i uporządkować według opisu?

  3. Resetowanie AUTO_INCREMENT zajmuje dużo czasu w MySQL

  4. Zapisywanie serbskich znaków łacińskich w bazie danych

  5. Zignoruj ​​błąd zduplikowanego klucza w MySQL na INSERT