J'ai été aux prises avec cette contrainte de vérification pendant quelques heures et espérais que quelqu'un aurait la gentillesse d'expliquer pourquoi cette contrainte de vérification ne fait pas ce que je pense qu'elle devrait faire. Essentiellement, vous devez être invalide pour percevoir un revenu d'invalidité. Il semble que la première partie de cette contrainte de vérification (IS_DISABLED IS NULL AND DISABILITY_INCOME_TYPE_ID IS NULL)
n'est pas appliquée (voir ci-dessous).Oracle Check Constraint
Les valeurs disponibles pour DISABILITY_INCOME_TYPE_ID
sont 1 et 2, ce qui est appliqué via une clé étrangère. Les deux IS_DISABLED
et DISABILITY_INCOME_TYPE_ID
peuvent être null.
-- incorrectly succeeds (Why?)
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (null, 1);
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (null, 2);
-- correctly fails
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (0, 1);
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (0, 2);
-- correctly succeeds
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (0, null);
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (1, 1);
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (1, 2);
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (1, null);
INSERT INTO CLIENTS (IS_DISABLED, DISABILITY_INCOME_TYPE_ID) VALUES (null, null);
Merci pour votre aide, Michael
Juste vérifier que je vois le même comportement que vous voyez sur Oracle 10.2.0.4.0. –