Bonjour,

J'ai lu :Bases de données relationnelles
et contraintes SQL par Frédéric Brouard, alias SQLpro

Dans ma base de données j'ai une tache qui est soit typé soit appartient à une machine mais pas les deux.

Donc dans ma table j'ai la clé étrangère de type et machine.
Pour executer la contrainte évoqué plus, je pense à la contrainte check.

cependant, je ne sais pas comment la formuler.

Dans ma table tache j'aurais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
MACHINE_ID  INTEGER FOREIGN KEY REFERENCES T_MACHINE (MACHINE_ID),
 TYPE_ID  INTEGER FOREIGN KEY REFERENCES T_TYPE (TYPE_ID)
Il faudrait que je mette quelque chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
MACHINE_ID  INTEGER FOREIGN KEY REFERENCES T_MACHINE (MACHINE_ID) CHECK SI NOT NULL ALORS REGARDER SI TYPE_ID EST NULL,
 TYPE_ID  INTEGER FOREIGN KEY REFERENCES T_TYPE (TYPE_ID) CHECK SI NOT NULL ALORS REGARDER SI MACHINE_ID EST NULL
Est ce possible avec un type de contrainte CHECK ?