USP_SCHEMAINFO_GETFOREIGNKEYINFORMATION
Returns a list of tables that reference the parent table using a foreign key.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PARENTTABLENAME | nvarchar(128) | IN | |
@TABLESCHEMA | nvarchar(128) | IN |
Definition
Copy
CREATE procedure dbo.USP_SCHEMAINFO_GETFOREIGNKEYINFORMATION
(
@PARENTTABLENAME nvarchar(128),
@TABLESCHEMA nvarchar(128) = 'dbo'
)
as
/*
MAB 4/23/08
This sp is getting called from a SqlClr function. Setting nocount on will result in a "Invalid use of side-effecting or time-dependent operator in 'SET ON/OFF' within a function." error
set nocount on;
*/
-- Get the object_id of the starting table
declare @PARENTTABLEID int
select
@PARENTTABLEID = object_id
from
sys.objects
inner join sys.schemas on sys.schemas.schema_id = sys.objects.schema_id
where
sys.objects.name = @PARENTTABLENAME and
sys.objects.type = 'U' and
sys.schemas.name = @TABLESCHEMA
-- Find all child tables of the parent table
select
sys.objects.name as TABLENAME,
CHILDCOLUMN.name as FOREIGNKEYCOLUMN,
PARENTCOLUMN.name as PARENTIDCOLUMN
from
sys.objects
inner join sys.foreign_key_columns on sys.foreign_key_columns.parent_object_id = sys.objects.object_id
inner join sys.columns as CHILDCOLUMN on CHILDCOLUMN.column_id = sys.foreign_key_columns.parent_column_id and CHILDCOLUMN.object_id = sys.foreign_key_columns.parent_object_id
inner join sys.columns as PARENTCOLUMN on PARENTCOLUMN.column_id = sys.foreign_key_columns.referenced_column_id and PARENTCOLUMN.object_id = sys.foreign_key_columns.referenced_object_id
where
sys.foreign_key_columns.referenced_object_id = @parenttableid
order by
sys.objects.name