Je possède ce morceau très simple qui a été mise sur écoute mon cerveau pendant quelques heures maintenant:contrainte CHECK pour restreindre les valeurs NULL basée sur une autre colonne valeurs
CREATE TABLE driving_school_questions(
question VARCHAR2(200),
picture VARCHAR2(2),
CONSTRAINT q_p_chk CHECK ((question LIKE '%see picture%' AND picture IS NOT NULL)
AND
(question LIKE '% %' OR picture IS NULL))
);
Ce que je suis en train ici atteindre est de créer une contrainte Si le champ de la question contient 'voir l'image' alors l'image ne peut pas être nulle, elle peut être NULL pour chaque question qui ne contient pas 'voir l'image'. J'avais essayé d'autres expressions dans la clause CHECK mais en disponibilité.
Ces inserts fonctionnent très bien:
INSERT INTO driving_school_questions (question, picture)
VALUES ('blahblah see picture', '23'); --NOT NULL so ok for now
INSERT INTO driving_school_questions (question, picture)
VALUES ('blah blah see picture ', NULL); --It's ok to be NULL(constraint violated)
Ce ne fonctionne pas:
INSERT INTO driving_school_questions (question, picture)
VALUES ('blah blah', NULL);--it should work but constraint violation
Est-ce que 'question' peut être' null'? Vraisemblablement non, auquel cas vous devriez avoir * cela * comme contrainte (écrire les mots 'NOT NULL' juste après la définition de la colonne). Si * peut * être 'null', la contrainte de vérification devra gérer cette possibilité - et vous devrez partager les besoins de l'entreprise dans ce cas. – mathguy