sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man uppdaterar rader med två tabeller som har begränsningar för främmande nyckel

I Postgres kan du använda en skrivbar CTE för att uppdatera båda tabellerna i en enda sats.

Förutsatt att denna tabellinställning:

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 skulle vara:

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

Eftersom (icke uppskjutningsbara) främmande nycklar utvärderas på satsnivå och både den primära och främmande nyckeln ändras i samma sats , det här fungerar.

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



  1. Välj slumpmässiga rader

  2. MySQL:Hitta upprepade namn i min användartabell

  3. Korstabellfråga med dynamiska kolumner i SQL Server 2005 upp

  4. Lära 2 SUM() motsvarande hjälpare?