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

Jak provést kaskádovou aktualizaci?

V Postgresu (a dalších RDBM) se kaskádové aktualizace vztahují výhradně na cizí klíče. Příklad:

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) 

Jiné možnosti ve skutečnosti nejsou potřeba. Pokud cítíte potřebu to udělat pro sloupec, který není cizím klíčem, znamená to, že model je špatně navržený (není to normalizováno ). Na druhou stranu možnost selektivní kaskádové aktualizace cizích klíčů neřeší žádný praktický problém, ale spíše porušuje obecná pravidla.



  1. vyhledávání podle relevance ve více souvisejících tabulkách

  2. je `date` platný název sloupce mysql?

  3. oracle sql (chybějící levá závorka

  4. Je tento kód PHP zranitelný vůči SQL injection?