El día de hoy un amigo me pregunto como ver las relaciones foráneas (FK) de una tabla(s) en SQL 2005 desde código y no en vista de diseño. Poniéndome a buscar encontré algunos ejemplos, de los cuales considero el más eficaz. El siguiente ejemplo muestra como obtener las llaves foráneas en conjunto con sus relaciones a otras tablas en SQL Server 2005. Todo consiste en acceder al catalogo de sistema que contiene las llaves foráneas y el catalogo de columnas de las mismas llaves.
USE tuBaseDeDatos;
GO
SELECT fk.name AS FK,
OBJECT_NAME(fk.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName,
OBJECT_NAME (fk.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS fk
INNER JOIN sys.foreign_key_columns AS fc ON fk.OBJECT_ID = fc.constraint_object_id
@http://blog.sqlauthority.com/2007/09/04/sql-server-2005-find-tables-with-foreign-key-constraint-in-database/
En base al código anterior y para efectos de claridad prepare la siguiente consulta que obtiene el nombre de una relación foránea (FK) y el nombre de la columna la cual funciona como FK, todo esto a partir de una determinada tabla.
USE tuBaseDeDatos;
GO
DECLARE @tabName AS Varchar(50)
SET @tabName = 'dbo.TU_TABLA'--Nombre de la Tabla de la cual se obtendrán las FK's.
SELECT OBJECT_NAME(f.constid) AS 'FKName', c.name AS 'ColName'
FROM sysforeignkeys f
INNER JOIN syscolumns c ON f.fkeyid = c.id AND f.fkey = c.colid
WHERE fkeyid = OBJECT_ID(@tabName)
Espero les sea de ayuda. Dejen comentarios!!!
Comentarios recientes