Obtener las claves foráneas de una tabla en SQL Server
La siguiente consulta SQL permite obtener el nombre de todos los campos de una tabla que hacen referencia a índices de tablas externas (lo que conocemos como foreign keys o claves foráneas).
SELECT SYSCOLUMNS.name as field
FROM SYSCOLUMNS
INNER JOIN SYSOBJECTS ON SYSOBJECTS.ID = SYSCOLUMNS.ID
WHERE SYSOBJECTS.name = '$vTable'
and SYSCOLUMNS.xtype = '56'
and SYSCOLUMNS.name <> '$vIndex’;
En SQL Server el valor que corresponde a las claves foráneas en la tabla SYSCOLUMNS en el campo xtype es el 56.
Pero este valor también corresponde a la clave primaria es por ello que en la consulta anterior agrego SYSCOLUMNS.name <> '$vIndex’ donde vIndex es el nombre del campo que es clave primaria.
Adicionalmente podemos agregar en esta consulta que nos muestre o no los valores que pueden ser o no nulos, para ello solo debemos agregar en el WHERE la siguiente comprobación and SYSCOLUMNS.isnullable = ‘’ (1 para los que puedan ser nulos y 0 para los que no).
Comentarios
Y a su vez está relacionado con lo que cierto ex-compañero de trabajo quiso instaurar en su día ... no se en que se habrá quedado todo eso...
Saludos!
espero haber sido claro y me puedas ayudar