--
建立一个测试表
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [ dbo ] . [ TableTest ] (
[ ID ] [ int ] NOT NULL ,
[ Name ] [ nvarchar ] ( 50 ) NULL ,
CONSTRAINT [ PK_TableTest ] PRIMARY KEY CLUSTERED
(
[ ID ] ASC
) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ]
) ON [ PRIMARY ]
-- --判断表的字段是否为主键
create proc IsPKField
@TableName nvarchar ( 50 ), -- 数据表名
@PKField nvarchar ( 50 ) -- 字段名,注意参数的不能有[]
as
declare @result bit
if (
SELECT count ( * )
FROM sysobjects
WHERE (name =
( SELECT name
FROM sysindexes
WHERE (id = OBJECT_ID ( @TableName )) AND (indid =
( SELECT indid
FROM sysindexkeys
WHERE (id = OBJECT_ID ( @TableName )) AND (colid =
( SELECT colid
FROM syscolumns
WHERE (id = OBJECT_ID ( @TableName )) AND (name = @PKField ))))))) AND
(xtype = ' PK ' )
) > 0
begin
select @result = 1
end
else
begin
select @result = 0
end
return @result
go
-- 看一下运行效果,@PKField='ID'返回1,='Name' 返回0
DECLARE @return_value int
EXEC @return_value = [ dbo ] . [ IsPKField ]
@TableName = N ' TableTest ' ,
@PKField = N ' ID '
SELECT ' Return Value ' = @return_value
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [ dbo ] . [ TableTest ] (
[ ID ] [ int ] NOT NULL ,
[ Name ] [ nvarchar ] ( 50 ) NULL ,
CONSTRAINT [ PK_TableTest ] PRIMARY KEY CLUSTERED
(
[ ID ] ASC
) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ]
) ON [ PRIMARY ]
-- --判断表的字段是否为主键
create proc IsPKField
@TableName nvarchar ( 50 ), -- 数据表名
@PKField nvarchar ( 50 ) -- 字段名,注意参数的不能有[]
as
declare @result bit
if (
SELECT count ( * )
FROM sysobjects
WHERE (name =
( SELECT name
FROM sysindexes
WHERE (id = OBJECT_ID ( @TableName )) AND (indid =
( SELECT indid
FROM sysindexkeys
WHERE (id = OBJECT_ID ( @TableName )) AND (colid =
( SELECT colid
FROM syscolumns
WHERE (id = OBJECT_ID ( @TableName )) AND (name = @PKField ))))))) AND
(xtype = ' PK ' )
) > 0
begin
select @result = 1
end
else
begin
select @result = 0
end
return @result
go
-- 看一下运行效果,@PKField='ID'返回1,='Name' 返回0
DECLARE @return_value int
EXEC @return_value = [ dbo ] . [ IsPKField ]
@TableName = N ' TableTest ' ,
@PKField = N ' ID '
SELECT ' Return Value ' = @return_value
GO