J'ai une base de données qui a une contrainte NOT NULL sur un champ, et je veux supprimer cette contrainte. Le facteur de complication est que cette contrainte a un nom défini par le système, et que le nom de la contrainte diffère entre le serveur de production, le serveur d'intégration et les différentes bases de données des développeurs. Notre processus actuel consiste à vérifier les scripts de modification, et une tâche automatisée exécute les requêtes appropriées via sqlplus par rapport à la base de données cible, donc je préférerais une solution qui pourrait simplement être envoyée directement dans sqlplus.Comment puis-je supprimer une contrainte "non nulle" dans Oracle lorsque je ne connais pas le nom de la contrainte?
Sur ma propre base de données, le SQL de laisser tomber ce serait:
alter table MYTABLE drop constraint SYS_C0044566
je peux voir la contrainte quand j'Interrogez la vue all_constraints
:
select * from all_constraints where table_name = 'MYTABLE'
mais je ne suis pas sûr de savoir comment fonctionne avec le type de données LONG
SEARCH_CONDITION
ou la meilleure façon de supprimer dynamiquement la contrainte recherchée même après que je connais son nom. Donc, comment puis-je créer un script de changement qui peut supprimer cette contrainte en fonction de ce qu'elle est, plutôt que de son nom?
EDIT: @ La réponse d'Allan est un bon, mais je suis préoccupé (à mon manque d'expertise Oracle) qu'il ne peut pas être universellement vrai que toute contrainte qui pourrait avoir un nom généré par le système aura associé à un moyen de supprimer la contrainte sans avoir à connaître son nom. Est-il vrai qu'il y aura toujours un moyen d'éviter de connaître le nom d'une contrainte nommée par le système lors de la suppression logique de cette contrainte?
Juste pour satisfaire votre curiosité: La contrainte NOT NULL est le type de contrainte * only * dans Oracle que vous pouvez supprimer sans avoir besoin de connaître le nom de la contrainte. Tous les autres types de contraintes dont vous avez besoin pour connaître le nom de la contrainte. –