Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2008, 14h33   #1
Futur Membre du Club
 
Développeur informatique
Inscription : mai 2008
Messages : 103
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2008
Messages : 103
Points : 17
Points : 17
Par défaut Désactivation de toutes les Foreign Key pointant sur une table.

Bonjour,

J'ai une table qui est "centrale" dans ma base de données SQL Server.
C'est à dire que beaucoup d'autres tables ont une Foreign key vers cette table centrale.

J'aurais besoin temporairement de désactiver toutes ces contraintes de Foreign key, de faire une opération sur ma table centrale, puis de les réactiver.

Existe-il une commande, ou auriez vous un script ou procédure stockée qui fait cela ?

Merci d'avance.

Sybaris
sybaris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 10h11   #2
Membre Expert
 
Inscription : juin 2007
Messages : 1 056
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 056
Points : 1 078
Points : 1 078
bonjour,

pour chaque contrainte FK de la table :
Code :
1
2
3
 
ALTER TABLE <matable> NOCHECK CONSTRAINT <ma_contrainte>
go
__________________
Emmanuel T.
kagemaru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 23h01   #3
Futur Membre du Club
 
Développeur informatique
Inscription : mai 2008
Messages : 103
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mai 2008
Messages : 103
Points : 17
Points : 17
Bonjour,

Je suis d'accord avec ce code. Il désactive pour 1 table 1 contrainte donnée.
Le code que je recherche, c'est un code qui désactive toutes les contraintes d'une table. Ceci sans lui spécifier la liste des contraintes.
Grosso modo, je verrais bien une boucle qui fasse ce code là, en bouclant sur la liste des contraintes récupérées dans les tables système etc...

Code :
1
2
3
 
ALTER TABLE <matable> NOCHECK CONSTRAINT <ma_contrainte>
go
Bref, l'idéal pour moi serait une procédure stockée, à laquelle on passe un nom de table, et qui fasse tout le boulot...

Si quelqu'un a ca en stock...

Merci d'avance.

Sybaris
sybaris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2008, 20h57   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 792
Points : 17 792
Les contraintes étant décrites dans les vues d'informations de schéma conformément à la norme SQL, il suffit de vous y plonger dedans : http://sqlpro.developpez.com/cours/s...age=partie2#L9

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h07.


 
 
 
 
Partenaires

Hébergement Web