我想知道表是否有标识列。表格不为我所知。我还没有完成表格的结构。使用查询?
我使用的是Sql Server Compact Edition。
答案 0 :(得分:18)
这是返回标识列名称的查询;
create procedure GetIdentity
@tablename varchar(50)
begin
SELECT OBJECT_NAME(OBJECT_ID) AS TABLENAME,
NAME AS COLUMNNAME,
SEED_VALUE,
INCREMENT_VALUE,
LAST_VALUE,
IS_NOT_FOR_REPLICATION
FROM SYS.IDENTITY_COLUMNS
WHERE OBJECT_NAME(OBJECT_ID) = @tablename
end
然后形成代码方。
使用datareader角色调用此存储过程,然后选中datareader.hasrows()
。如果条件值为true(1
),则表格具有标识列(如果已设置)。如果没有,则它没有标识列。
答案 1 :(得分:11)
很久以前我就知道了,但我觉得这很有帮助
试试这个:
IF EXISTS (SELECT * from syscolumns where id = Object_ID(@TABLE_NAME) and colstat & 1 = 1)
BEGIN
-- Do your things
END
答案 2 :(得分:7)
以下任何查询都可用于检查表格中是否存在标识列
1)
SELECT *
FROM sys.identity_columns
WHERE OBJECT_NAME(object_id) = 'TableName'
2)
SELECT *
FROM sys.identity_columns
WHERE object_id = (
SELECT id
FROM sysobjects
WHERE name = 'TableName'
)
答案 3 :(得分:7)
IF (OBJECTPROPERTY(OBJECT_ID('TABLE_NAME'), 'TableHasIdentity') = 1)
从pql server 2008开始, ObjectProperty
可用参考:
OBJECTPROPERTY
答案 4 :(得分:4)
我想添加此选项以及我认为它是最简单的
SELECT COLUMNPROPERTY(OBJECT_ID('TableName'),'ColumnName','isidentity')
答案 5 :(得分:3)
执行此操作的一种方法是使用存储过程sp_help
。即:
sp_help MyTable
这将返回一个DataSet,其中包含您在表中需要的所有信息。有一个特定的表,其中包含有关身份的信息。
I.e:
如果它不包含标识字段,则标识列将显示:“未定义标识列”。
答案 6 :(得分:3)
这是电话:
SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE AUTOINC_INCREMENT IS NOT NULL AND TABLE_NAME='this_table'
它将返回1(真)或0(假)。
答案 7 :(得分:1)
这个查询获取所有表名称,表的列名,并且在所选数据库中是否为身份
SELECT
sys.columns.name
, sys.tables.name
, is_identity
FROM sys.columns
INNER JOIN sys.tables ON sys.tables.object_id = sys.columns.object_id
AND sys.columns.is_identity = 1
答案 8 :(得分:1)
... 声明@tblhasIdentCol位= IF(IDENT_CURRENT(@dbName +'。'+ @schemaName +'。'+ @tableName)IS NOT NULL,1,0)
如果表具有标识,您将获得数值
答案 9 :(得分:0)
如果当前表具有标识列,则可以使用1或0 布尔值表单
SELECT Count(Column_ID) FROM sys.identity_columns WHERE OBJECT_NAME(object_id) = 'tableName'
答案 10 :(得分:0)
CREATE FUNCTION dbo.fnTableHasIdentity(@Tbl sysname)
RETURNS TINYINT
BEGIN
RETURN OBJECTPROPERTY(OBJECT_ID(@Tbl), 'TableHasIdentity')
END
-就这么简单!
答案 11 :(得分:0)
select t.name as TableName,c.name as ColumnName
from sys.identity_columns c
inner join sys.tables t on c.object_id = t.object_id
where t.name = 'TableName'