web-dev-qa-db-fra.com

Comment ajouter une contrainte non nulle sur une colonne contenant des valeurs nulles

J'ai une table avec une colonne qui contient quelques valeurs nulles. Je veux ajouter un NOT NULL contrainte sur cette colonne sans mettre à jour les valeurs NULL existantes vers une valeur non nulle. Je veux conserver les valeurs nulles existantes et vérifier pour les futures lignes qu'elles contiennent une valeur non nulle pour cette colonne. Est-ce possible? Comment?

20
Rachcha

Vous pouvez ajouter une contrainte non validée - elle ne regardera pas les lignes existantes, mais elle sera vérifiée pour toutes les lignes nouvelles ou mises à jour.

ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;

Sachez simplement que vous ne pourrez pas mettre à jour une ligne existante à moins qu'elle ne réponde à la contrainte.

Soyez également conscient de l'inconvénient que l'optimiseur ne sera pas en mesure de tirer parti de cette contrainte lors de l'élaboration de ses plans - il doit supposer que certaines lignes peuvent toujours avoir une valeur nulle.

49
Jeffrey Kemp