UFN_SCHEMA_GETPARENTTABLENAME

Return

Return Type
nvarchar(128)

Parameters

Parameter Parameter Type Mode Description
@TABLENAME nvarchar(128) IN
@COLUMNNAME nvarchar(128) IN

Definition

Copy

CREATE function [dbo].[UFN_SCHEMA_GETPARENTTABLENAME](@TABLENAME nvarchar(128), @COLUMNNAME nvarchar(128)) returns nvarchar(128)
with execute as caller 
as
    begin

        declare @value nvarchar(128);

/* 

        select @value = KEYCOLUMNUSAGE.table_name
            from INFORMATION_SCHEMA.KEY_COLUMN_USAGE KEYCOLUMNUSAGE inner join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS REFERENTIALCONSTRAINTS on KEYCOLUMNUSAGE.CONSTRAINT_NAME = REFERENTIALCONSTRAINTS.UNIQUE_CONSTRAINT_NAME
            inner join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CONSTRAINTCOLUMNUSAGE on REFERENTIALCONSTRAINTS.CONSTRAINT_NAME = CONSTRAINTCOLUMNUSAGE.CONSTRAINT_NAME
            where (CONSTRAINTCOLUMNUSAGE.TABLE_NAME = @TABLENAME) and (CONSTRAINTCOLUMNUSAGE.COLUMN_NAME = @COLUMNNAME)

        pdg 8.7.2008 

        Changed to use the sys metadata views instead of INFORMATION_SCHEMA to optimize 
        this function called during TableSpec processing.

*/

        declare @table_object_id int;
        declare @column_id int;

        set @table_object_id=OBJECT_ID(@TABLENAME,'U');

        select @column_id = column_id 
        from sys.columns 
        where 
        [name]=@COLUMNNAME
        and 
        OBJECT_ID=@table_object_id;

        select
        @value=OBJECT_NAME(fkc.referenced_object_id)
        from
        sys.foreign_key_columns as fkc
        where 
        fkc.parent_object_id = @table_object_id
        and 
        fkc.parent_column_id=@column_id;

        return @value;

    end