sql >> Database >  >> RDS >> PostgreSQL

Rijen van twee tabellen bijwerken die beperkingen voor refererende sleutels hebben

In Postgres kunt u een beschrijfbare CTE gebruiken om beide tabellen in één instructie bij te werken.

Uitgaande van deze tabelopstelling:

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

De CTE zou zijn:

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

Aangezien (niet-uitstelbare) externe sleutels worden geëvalueerd op instructieniveau en zowel de primaire als de externe sleutel worden gewijzigd in hetzelfde instructie , dit werkt.

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



  1. Kan ik deelnemen aan alle gegevensbronnen in SSRS?

  2. Mysql-unie uit meerdere databasetabellen

  3. Hoe GROTE BLOB's (> 100 MB) in Oracle te behouden met Hibernate

  4. oracle::occi::ResultSet::next() crasht mijn programma