Dans Microsoft SQL Server, je connais la requête permettant de vérifier si une contrainte par défaut existe pour une colonne et de supprimer une contrainte par défaut :
IF EXISTS(SELECT * FROM sysconstraints
WHERE id=OBJECT_ID('SomeTable')
AND COL_NAME(id,colid)='ColName'
AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Mais en raison d'une faute de frappe dans les versions précédentes de la base de données, le nom de la contrainte pouvait être DF_SomeTable_ColName
ou DF_SmoeTable_ColName
.
Comment supprimer la contrainte par défaut sans erreur SQL ? Les noms des contraintes par défaut n'apparaissent pas dans la table INFORMATION_SCHEMA, ce qui rend les choses un peu plus difficiles.
Donc, quelque chose comme "supprimer la contrainte par défaut dans cette table/colonne", ou "supprimer la contrainte par défaut dans cette table/colonne". DF_SmoeTable_ColName
mais ne donne pas d'erreur s'il ne peut pas le trouver.
1 votes
Je ne connais pas bien SQL Server. Pouvez-vous renommer une contrainte après avoir découvert son nom ? "Alter table sometable rename constraint xxx to yyy" dans Oracle.