Salut
La situation...
Les tables tm et tf (tf liée à tm par une intégrité référentielle)
Un fonction trigger qui annule la suppression dans tf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 create table tm(idm serial not null primary key, vm varchar); create table tf(idf serial not null primary key, idm int not null references tm(idm) on delete cascade, vf varchar);
insertion de données dans tm et tf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 --le trigger create function tgtf() returns trigger as $$ begin return null; end $$ language plpgsql --liaison à tf create trigger tgf before delete on tf FOR EACH ROW EXECUTE PROCEDURE tgtf();
suppression d'une ligne de tm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 insert into tm(vm) values('a'),('b'),('c'); insert into tf(idm, vf) values(1, 'a1'),(1, 'a2'), (2, 'b1'), (2, 'b2'),(3, 'c1'),(3, 'c2');
la jointure gauche
Code : Sélectionner tout - Visualiser dans une fenêtre à part delete from tm where idm=1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part select tf.idm, tf.vf, tm.idm from tf left join tm on tf.idm=tm.idm;Qu'en dites-vous?
idm vf idm 1 a1 1 a1 2 b1 2 2 b2 2 3 c1 3 3 c2 3
J'avais une fois remarqué qu'une des mes bd présentait ce problème (violation d'intégrité référentielle) sans que je ne sache comment c'est arrivé. Maintenant que j'ai reproduit la situation, je veux comprendre le problème.
@+
Partager