PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zaktualizować wiersze dwóch tabel, które mają ograniczenia dotyczące kluczy obcych

W Postgresie możesz użyć zapisywalnego CTE, aby zaktualizować obie tabele w jednym oświadczeniu.

Zakładając tę ​​konfigurację stołu:

create table a (rid integer primary key, ride text, qunta integer);
create table b (kid integer primary key, rid integer references a, date date);

CTE byłoby:

with new_a as (
  update a 
    set rid = 110
  where rid = 1
)
update b 
  set rid = 110 
where rid = 1;

Ponieważ (nieodroczone) klucze obce są oceniane na poziomie instrukcji, a zarówno klucz podstawowy, jak i klucz obcy są zmieniane w tym samym instrukcji , to działa.

SQLFiddle:http://sqlfiddle.com/#!15/db6d1/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie aktualizuj kolumny, jeśli wartość aktualizacji ma wartość null

  2. Jak przekonwertować ciąg na wartość liczbową w PostgreSQL

  3. Indeks obejmujący wiele tabel w PostgreSQL

  4. Węzeł jest 20 razy szybszy niż .NET Core podczas łączenia się z Postgres

  5. Entity Framework 6 z Npgsql