Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Supprimer toutes les contraintes dans une table

Eh bien, vous pouvez toujours copier la sortie du volet inférieur, la coller dans le volet supérieur et appuyer sur F5. Ou vous pouvez créer une chaîne à exécuter directement :

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'
ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
    + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + 
    ' DROP CONSTRAINT ' + QUOTENAME(name) + ';'
FROM sys.foreign_keys;

PRINT @sql;
-- EXEC sp_executesql @sql;

(Lorsque vous êtes satisfait du PRINT sortie, commentez-la et décommentez le EXEC . Notez que la sortie d'impression sera tronquée à 8K dans Management Studio mais la variable contient vraiment la commande entière.)

De plus, je ne sais pas comment cela se rapporte vraiment au fait que vous utilisiez ou non une procédure stockée, ou pourquoi vous essayez de le faire "sans passer par SP" ... cette requête peut être exécutée comme une procédure stockée ou non, tout dépend de la fréquence à laquelle vous allez l'appeler, de l'endroit où se déroule la procédure, etc.