sql >> Database >  >> RDS >> PostgreSQL

Hoe een trapsgewijze update uitvoeren?

In Postgres (en andere RDBM's) zijn trapsgewijze updates uitsluitend van toepassing op externe sleutels. Voorbeeld:

create table groups (
    group_id int primary key
);
    
create table users (
    user_id int primary key, 
    group_id int references groups on update cascade
);

insert into groups values (1);
insert into users values (1, 1);
update groups set group_id = 10 where group_id = 1;

select * from users;

 user_id | group_id 
---------+----------
       1 |       10
(1 row) 

In feite zijn andere opties niet nodig. Als u de behoefte voelt om dit te doen voor een kolom die geen externe sleutel is, betekent dit dat het model slecht is ontworpen (het is niet genormaliseerd ). Aan de andere kant lost de mogelijkheid van selectieve cascade-update van externe sleutels geen praktisch probleem op, maar breekt eerder de algemene regels.



  1. TransactSQL om een ​​ander TransactSQL-script uit te voeren

  2. Java2MySQL> Communicatieverbindingsfout opnieuw door onderliggende uitzondering

  3. Serialiseren versus imploderen

  4. Gegevens invoegen in MySQL-tabel vanuit Python-script