Comment puis-je supprimer toutes les contraintes de clé étrangère sur une table dans SQL Server 2000 à l'aide de T-SQL?Comment supprimer toutes les contraintes de clé étrangère sur une table dans Sql Server 2000?
Répondre
Je pense que vous trouverez qu'il n'y a aucun moyen facile de supprimer des contraintes sur une table dans SQL Server 2000. Cela dit, il y a beaucoup de gens qui ont écrit des scripts qui peuvent identifier et supprimer/recréer contraintes. Un exemple est à http://www.mssqltips.com/tip.asp?tip=1376 - mais je ne l'ai pas testé sur SQL Server 2000.
EDIT: Voici un autre example qui génère des scripts drop/create pour vous.
Si simplement désactiver les contraintes est une option ici, vous pouvez utiliser:
ALTER TABLE myTable NOCHECK CONSTRAINT all
alors vous pouvez les rallume simplement en utilisant:
ALTER TABLE myTable WITH CHECK CHECK CONSTRAINT all
Si vous souhaitez désactiver des contraintes dans toutes les tables vous pouvez utiliser:
-- disable all constraints
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
-- enable all constraints
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Plus dans la question: Can foreign key constraints be temporarily disabled using TSQL?
Mais si vous devez supprimer des contraintes de façon permanente, vous pouvez utiliser this script posted on databasejurnal.com.
Il suffit de modifier légèrement pour déposer uniquement les clés étrangères
create proc sp_drop_fk_constraints
@tablename sysname
as
-- credit to: douglas bass
set nocount on
declare @constname sysname,
@cmd varchar(1024)
declare curs_constraints cursor for
select name
from sysobjects
where xtype in ('F')
and (status & 64) = 0
and parent_obj = object_id(@tablename)
open curs_constraints
fetch next from curs_constraints into @constname
while (@@fetch_status = 0)
begin
select @cmd = 'ALTER TABLE ' + @tablename + ' DROP CONSTRAINT ' + @constname
exec(@cmd)
fetch next from curs_constraints into @constname
end
close curs_constraints
deallocate curs_constraints
return 0
Ici vous allez: (non testé sur SQL2000, mais devrait être ok)
Génère 'désactive':
SELECT 'IF EXISTS (SELECT * FROM sys.foreign_keys
WHERE object_id = OBJECT_ID(N''[dbo].' + FK +''')
AND parent_object_id = OBJECT_ID(N''[dbo].' + PT + '''))
ALTER TABLE ' + PT + ' NOCHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Génère 'active':
SELECT 'ALTER TABLE ' + PT + ' WITH CHECK CHECK CONSTRAINT ' + FK + ';'
FROM
(SELECT
OBJECT_NAME(constraint_object_id) as FK,
OBJECT_NAME(parent_object_id) as PT
FROM [sys].[foreign_key_columns]) T
ORDER BY FK
Mise à jour: Oups, je pensais que vous le vouliez pour toutes les tables :) Vous pouvez simplement modifier ci-dessus pour votre table unique.
- 1. Requête pour obtenir toutes les contraintes de clé étrangère dans SQL Server 2000
- 2. Est-il possible de supprimer toutes les contraintes de clé étrangère sur une table à la fois dans mySQL 5?
- 3. Comment supprimer une clé étrangère dans SQL Server?
- 4. Comment puis-je supprimer toutes les contraintes de contraintes par défaut sur une table
- 5. Oracle toutes les références de clé étrangère
- 6. Dans SQL Server, comment identifier toutes les dépendances pour une table spécifique à l'aide de tables/vues système?
- 7. colonne de chute SQL Server 2000 avec des contraintes
- 8. SQL Server 2005, le besoin de script pour vérifier toutes les contraintes sur la table
- 9. Comment puis-je désactiver temporairement toutes les contraintes dans une table dans Firebird 2.1?
- 10. Table Diff dans SQL Server 2000
- 11. Invoquer une action sur SQL Server 2000 Modifier la table
- 12. Comment se connecter à une table dans SQL Server 2000?
- 13. Comment créer une dépendance sql sur une table dans sql server 2000 et asp.net 2.0?
- 14. Créer clé étrangère SQL
- 15. Comment insérer des informations dans une table SQL si la table contient une clé étrangère?
- 16. Contrainte SQL Server 2000 impliquant une colonne sur une table différente
- 17. SQL Server 2008: trouvez la clé primaire/étrangère dans la table?
- 18. Désactiver la contrainte de clé étrangère sur une table?
- 19. Comment définir une clé étrangère dans Mnesia
- 20. Mise à jour, contraintes de clé étrangère et null
- 21. contrainte de clé étrangère dans sql
- 22. SQL Suppression en cascade sans clé étrangère?
- 23. Contraintes déportables dans SQL Server
- 24. Table temporaire SQL Server 2000 vs variable de table
- 25. Retirer les lignes non référencées par une clé étrangère
- 26. Erreurs SQL Server 2000 Server
- 27. Créer une clé étrangère pour les rôles ASP.Net table
- 28. sql server 2000: libération du verrou sur la table?
- 29. SQL Server 2005: contrainte de clé étrangère Nullable
- 30. Sql Server Ce 3.5 Vérifier les contraintes
Les tables système sont différentes mais nommées de manière similaire dans SQL Server 2000: http://msdn.microsoft.com/fr-fr/library/aa260604%28v=SQL.80%29.aspx – Emyr