Contrainte en SQL

Fermé
guillaume dupuy - 23 oct. 2001 à 15:34
 Pinta - 20 nov. 2001 à 11:50
Une question pas compliquée en sql mais je n'ai pas trouvé les réponses dans divers tutoriaux sauf peut être ici mais je ne peux pas encore le tester:

J'ai deux tables, disque et modèle.
Dans la table disque j'ai un champ disque_position et dans la table modèle j'ai un champ modele_max_disque.
Je veux une contrainte pour qu'à chaque fois que je rentre une ligne dans la table disque la valeur du champ disque_position soit strictement inférieur à la valeur du champ modele_max_disque
sachant que mon disque fait partie d'une machine qui elle a un modèle et donc une seule valeur de modele_max_disque.

Merci si quelqu'un comprend et résoud mon problème.
A voir également:

1 réponse

En SQL pur tu ne peux faire ce genre de truc propement.L'idéal est d'utiliser un langage procédurale, ex sous Oracle PL/SQL.
Bon si t'a pas le choix y'a une bidouille:
1. Cree une table temporaire tmp contenant les lignes à insérer
2. Fait l'insert avec comme clause where une sous requête faisant la jointure entre ta table tmp et ta table modèle max disque:

INSERT VALUES(...) INTO disque
WHERE ( clés) IN SELECT ( clés )
FROM modele_max_disque , tmp
WHERE modele_max_disque.disque_position > tmp.champ disque_position ;
0