Bonjour,

Je cherche le moyen de créer une contrainte d'unité mais pas directe.
Je m'explique, j'ai 4 tables:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE TABLE famille_produit (t1_id NUMBER(18,0) NOT NULL, t1_label VARCHAR(50));
ALTER TABLE famille_produit ADD CONSTRAINT pk_t1 PRIMARY KEY t1_id;
 
CREATE TABLE produit (t2_id NUMBER(18,0) NOT NULL, t2_label VARCHAR(50), t1_id NUMBER(18,0) NOT NULL);
ALTER TABLE produit ADD CONSTRAINT pk_t2 PRIMARY KEY t2_id;
ALTER TABLE produit ADD CONSTRAINT fk_t2 FOREIGN KEY (t1_id) REFERENCES T1 (t1_id);
 
CREATE TABLE T3 (t3_id NUMBER(18,0) NOT NULL, t3_label VARCHAR(50));
ALTER TABLE T3 ADD CONSTRAINT pk_t3 PRIMARY KEY t3_id;
 
CREATE TABLE T4 (t2_id NUMBER(18,0) NOT NULL, t3_id NUMBER(18,0) NOT NULL);
ALTER TABLE T4 ADD CONSTRAINT pk_t4 PRIMARY KEY (t2_id, t3_id);
ALTER TABLE T4 ADD CONSTRAINT fk_t4_1 FOREIGN KEY (t2_id) REFERENCES produit (t2_id);
ALTER TABLE T4 ADD CONSTRAINT fk_t4_2 FOREIGN KEY (t3_id) REFERENCES T3 (t3_id);
Dans la table T4, je veux que pour un identifiant T3_ID:
. avoir un seul enregistrement produit pour une famille produit.
. autoriser plusieurs enregistrements produit, s'ils ne sont pas de la même famille.

Je pensais utiliser un trigger, mais d'après ce que j'ai lu, ce n'est pas préconisé. Je ne vois pas comment faire autrement.
Merci de votre aide.