J'essayais de déterminer une meilleure façon que tant d'instructions IF/THEN pour déterminer si une ou plusieurs tables contiennent une référence à une clé forign. J'ai simplement besoin de savoir (vrai/faux) si une ligne existe dans l'une des 20 tables. Toutes les tables ont le même champ fk. J'espère que cela a du sens, sinon je vais essayer d'expliquer plus loin.Déterminer si une ligne pour un fk existe dans l'une des 20 tables
Répondre
Je ne suis pas sûr de comprendre la question. Est-ce que ce qui suit améliorerait votre situation?
if exists(select * from Table1 where ForeignKeyColumn = searchValue)
or exists(select * from Table2 where ForeignKeyColumn = searchValue)
or exists(select * from Table3 where ForeignKeyColumn = searchValue)
or ...
oui c'est un peu plus compact - merci. – schmoopy
En supposant que les 20 tables restent cohérentes, qu'en est-il de l'utilisation d'une jointure externe gauche pour chacune des tables. façon probablement inefficace de le faire, mais devrait fonctionner
select Id from
(Select PK.id, isnull(tbl1.fk,0) as fk1, isnull(tbl2.fk,0) as fk2 ... etc
from pk left join tbl1 on pk.id = tbl1.fk left join
tbl2 on pk.id = tbl2.fk ... etc) as VirtualTable
Where fk1>0 or fk2>0 ... etc
Donc, vous essayez de travailler si vous pouvez supprimer une ligne en particulier?
Alors ... peut-être essayer:
begin tran;
delete tablename
where id = 3;
rollback tran;
voir alors quelle erreur vous obtenez (le cas échéant), et le nombre de lignes sont affectées.
Qu'en est-il quelque chose comme:
if exists (
select * from Table1 where MyKey = @key
union
select * from Table2 where MyKey = @key
union
select * from Table3 where MyKey = @key
...
)
Je n'ai pas une instance de serveur SQL ouvert devant moi, donc je suis sûr que a une erreur de syntaxe quelque part, mais vous obtenez l'idée =)
peut vouloir union tout pour améliorer la vitesse, puisque vous êtes seulement en train de fouiller forexistance ne pas retourner l'information – HLGEM
- 1. Déterminer si une valeur existe dans un tableau de hachages
- 2. Déterminer si une ressource existe dans ResourceManager
- 3. Générique pour déterminer si une colonne existe dans ADO.NET
- 4. Déterminer si une méthode existe dans une classe statique
- 5. Portable SQL pour déterminer si une table existe ou non?
- 6. Comment déterminer si un fichier existe dans un SPFolder SharePoint
- 7. Comment déterminer si une clé de registre existe dans Wix
- 8. Déterminer si un partage réseau existe avant le montage
- 9. Quelle est la meilleure façon de déterminer si une table temporaire existe dans SQL Server?
- 10. Comment déterminer si un ID de processus existe
- 11. Comment obtenir toutes les tables qui ont des FK dans une autre table?
- 12. Traverse structure xml pour déterminer si un certain nœud de texte existe
- 13. Insérer une ligne dans une table contenant FK obtenue à partir d'une autre table - linq -C#
- 14. LINQ to SQL, comment écrire une méthode qui vérifie si une ligne existe quand nous avons plusieurs tables
- 15. comment puis-je utiliser un dataservice de ado.net pour vérifier si une ligne existe?
- 16. Déterminer si stdout pour un processus Python est redirigé
- 17. Comment puis-je déterminer dans JS si une fonction/méthode existe dans IE7?
- 18. Déterminer si un point est sur une route
- 19. Déterminer si une variable est dans la plage?
- 20. Déterminer si une valeur ou une expression concrète est passée?
- 21. Quel est le moyen le plus rapide pour déterminer si une URL existe en PHP?
- 22. test pour voir si un XElement existe
- 23. Comment déterminer si une chaîne contient des métacaractères regex? (C#)
- 24. Déterminer si un marqueur est visible dans Google Maps
- 25. Dans CakePHP, comment pouvez-vous déterminer si un champ a été modifié dans une action d'édition?
- 26. Comment vérifier si une variable existe dans un modèle FreeMarker?
- 27. Outil de ligne de commande pour créer un script pour des tables MSSQL spécifiques
- 28. Meilleure façon de déterminer si un attribut XML existe dans Flex
- 29. Déterminer si un WCH ServiceHost a des connexions actives
- 30. Comment puis-je déterminer si un PGArray est inclus dans un autre utilisant des sessions SQLAlchemy?
SYS.FOREIGN_KEYS et SYS.TABLES ... –