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.
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.
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'