Dans Microsoft SQL Server, je connais la requête pour vérifier si une contrainte par défaut existe pour une colonne et supprimer une contrainte par défaut est:
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 de la faute de frappe dans les versions précédentes de la base de données, le nom de la contrainte pourrait être DF_SomeTable_ColName
ou DF_SmoeTable_ColName
.
Comment puis-je supprimer la contrainte par défaut sans aucune erreur SQL? Les noms de contraintes par défaut n'apparaissent pas dans la table INFORMATION_SCHEMA, ce qui rend les choses un peu plus compliquées.
Donc, quelque chose comme «supprimer la contrainte par défaut dans cette table / colonne» ou «supprimer DF_SmoeTable_ColName
», mais ne donnez aucune erreur s'il ne la trouve pas.
sql
sql-server
tsql
Robo
la source
la source
Réponses:
En développant le code de Mitch Wheat, le script suivant générera la commande pour supprimer la contrainte et l'exécuter dynamiquement.
la source
Le billet de blog de Rob Farley pourrait être utile:
Quelque chose comme:
la source
J'ai trouvé que cela fonctionne et n'utilise aucune jointure:
Assurez-vous simplement que columnName ne comporte pas de crochets, car la requête recherche une correspondance exacte et ne retournera rien s'il s'agit de [columnName].
la source
IF @ObjectName IS NOT NULL
avant la commande EXEC[default_object_id])
est 0 . Je reçois NULL valeur.Pour supprimer la contrainte pour plusieurs colonnes:
la source
Solution étendue (prend en compte le schéma de table):
la source
Supprimez toutes les contraintes par défaut dans une base de données - sans danger pour le seuil nvarchar (max).
la source
Exécutez cette commande pour parcourir toutes les contraintes:
Il ressemblera à quelque chose comme ceci:
DF__Mytable__Column__[ABC123]
. Ensuite, vous pouvez simplement supprimer la contrainte.la source
exec sp_helpconstraint 'Roles2016.UsersCRM'
J'espère que cela pourrait être utile pour qui a un problème similaire. Dans la
ObjectExplorer
fenêtre, sélectionnez votre base de données => Tables, => votre table => Contraintes. Si le client est défini lors de la création de l'heure de la colonne, vous pouvez voir le nom par défaut de la contrainte, y compris le nom de la colonne. puis utilisez:(le nom de la contrainte n'est qu'un exemple)
la source
La solution suivante supprimera la contrainte par défaut spécifique d'une colonne du tableau
la source
J'ai eu des colonnes qui avaient plusieurs contraintes par défaut créées, donc je crée la procédure stockée suivante:
la source
Utile pour certaines colonnes qui en avaient créé plusieurs
default constraints or check constraints
:Script https://stackoverflow.com/a/16359095/206730 modifié
la source
Générez toujours un script et passez en revue avant de lancer. Sous le script
la source
la source
Regarde.
la source