web-dev-qa-db-fra.com

Comment trouver des tables de référencement?

Je suis sur SQL Server 2014 et j'ai une table User:

+----+------+-----+
| ID | Name | ... |
+----+------+-----+
| 11 | John | ... |
| 12 | Jack | ... |
| .. | .... | ... |
+----+------+-----+

Et j'ai de nombreux tableaux qui font référence à celui-ci. Puis-je obtenir une liste de toutes les tables qui font référence à cette table? Et, en particulier, puis-je obtenir une liste de toutes les tables qui font référence à une ligne particulière de cette table?

Je devrai ensuite mettre à jour toutes les références à User 12 à User 11.

4
Giovanni Lovato
sp_help 'User'

Cette commande vous donnera toutes les contraintes et dépendances sur cette table. De plus, si vous souhaitez également toutes les procédures qui dépendent de ce tableau, faites-le moi savoir.

4
Chaos Legion

Lorsque vous dites "une liste de tables qui font référence à cette table", voulez-vous dire une liste de tables qui ont une clé étrangère qui fait référence à votre clé primaire? Si c'est le cas, vous pouvez obtenir une liste de clés étrangères qui référencent votre table "Utilisateur" avec la requête suivante:

SELECT name as Foreign_Key
,schema_name(schema_id) as Schema_Name
,object_name(parent_object_id) as Table_Name
FROM sys.foreign_keys
WHERE Referenced_object_id = object_id('dbo.user','U');

si votre table appartient à un autre schéma que dbo, remplacez le nom du schéma.

Cette requête vous donnera toutes les clés étrangères référencées à votre utilisateur de table. Vous saurez désormais quelles jointures vous devez effectuer dans votre déclaration de mise à jour pour maintenir l'intégrité référentielle.

Edit: woahhhhhh vis ma réponse, La meilleure réponse par db2 donne plus de détails dans sa requête. Comment trouver la clé étrangère associée à une clé primaire donnée

Ajoutez une clause WHERE à sa requête avant la clause ORDER BY pour une table spécifique.

ex. OERE o2.name = 'Utilisateur'

3
Luke Pafford