sql 根据外键表和外键列得到主键表和主键列的方法

本文提供了一个SQL函数,用于从外键关联中获取主键列名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Create FUNCTION [dbo].[GetPrimaryColumn] (   -- Add the parameters for the function here  @column nvarchar(500) ) RETURNS nvarchar(max) AS

begin  -- Add the SELECT statement with parameter references here declare @result nvarchar(max)='' select @result=(PrimaryTableName +'.'+ PrimaryColumnName)from (  SELECT   ForeignTableID   = b.fkeyid ,  ForeignTableName = '['+object_name(b.fkeyid) +']' ,  ForeignColumnID   = b.fkey ,  ForeignColumnName   ='[' + (SELECT name FROM syscolumns WHERE colid = b.fkey AND id = b.fkeyid) +']',  PrimaryTableID   = b.rkeyid ,  PrimaryTableName   = '['+object_name(b.rkeyid)+']' ,  PrimaryColumnID   = b.rkey ,  PrimaryColumnName   ='['+ (SELECT name FROM syscolumns WHERE colid = b.rkey AND id = b.rkeyid) +']' ,  CascadeUpdate   = ObjectProperty(a.id,'CnstIsUpdateCascade') ,  CascadeDelete   = ObjectProperty(a.id,'CnstIsDeleteCascade') FROM sysobjects a   join sysforeignkeys b on a.id = b.constid   join sysobjects c on a.parent_obj = c.id where a.xtype = 'f' AND c.xtype = 'U' ) FPT where (FPT.ForeignTableName +'.' +FPT.ForeignColumnName)= @column

return @result end

GO

转载于:https://www.cnblogs.com/Mac_Hui/archive/2013/02/05/2892535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值