27 jul 2014

Todas las FK de una Tabla (Versión Actualizada)

En un post ya viejo habíamos señalado como listar las llaves foráneas de una tabla. En esta nueva versión, igualmente cortesía del Maese Norberto Mesén listamos las tablas hija, las columna hija, las tablas referenciada y las columnas referenciada más el nombre del constraint de la FK y el id de cada columna en su respectiva tabla.
USE MiBaseDeDatos;

SELECT
    fk.name 'FK',
    tp.name 'Tabla Hija',
    cp.name AS 'Columna hija', 
    cp.column_id,
    tr.name 'Tabla refenciada',
    cr.name 'Columna referenciada', 
    cr.column_id
FROM sys.foreign_keys fk
INNER JOIN sys.tables tp 
    ON fk.parent_object_id = tp.object_id
INNER JOIN sys.tables tr 
    ON fk.referenced_object_id = tr.object_id
INNER JOIN sys.foreign_key_columns fkc 
    ON fkc.constraint_object_id = fk.object_id
INNER JOIN sys.columns cp 
    ON fkc.parent_column_id = cp.column_id 
    AND fkc.parent_object_id = cp.object_id
INNER JOIN sys.columns cr 
    ON fkc.referenced_column_id = cr.column_id 
    AND fkc.referenced_object_id = cr.object_id
ORDER BY tp.name, cp.column_id
Muy útil!