sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql, aktualizujte nebo vložte podle velikosti písmen

Chtěl jsem to udělat také, po prozkoumání a troše pokusů a omylů jsem přišel s tímto funkčním řešením.

použijte with prohlášení

with
u as (
  update my_table
    set some_value = $2
  where
    id = $1
  returning *
)
,
i as (
  insert into my_table (id, some_value)
    select $1, $2
  where 
    not exists(select * from u)
  returning *
)

select * from u
union
select * from i;

Zkuste aktualizaci nejprve vrátit aktualizovaný řádek, pokud z aktualizace není vrácen žádný řádek, vložte řádek vracející vložený řádek. Poté vyberte spojení vrácených hodnot z aktualizace a vložení, protože se stane pouze jedna, vrátíte pouze jeden řádek.

Doufám, že to pomůže



  1. Laravel Migrations – Problémy při vytváření časových razítek

  2. Načítání CSV do tabulky MySQL pomocí PHP

  3. Co je nového v Postgres-XL 9.6

  4. Windows7 WAMP 64bitový zásobník Problémy s MySQL