【问题标题】:How do I determine if a column is an identity column in MSSQL 2000?如何确定一个列是否是 MSSQL 2000 中的标识列?
【发布时间】:2010-09-16 09:09:00
【问题描述】:

我想在代码中执行此操作,而不是使用 ALT+F1。

【问题讨论】:

标签: sql-server tsql metadata


【解决方案1】:

你也可以这样做:

select columnproperty(object_id('mytable'),'mycolumn','IsIdentity')

如果是身份则返回 1,否则返回 0。

【讨论】:

  • 万一你的表不在默认模式(dbo)中,你需要在表名中指定mySchema.myTable
【解决方案2】:
sp_help tablename 

在输出中查找如下内容:

 Identity     Seed     Increment     Not For Replication    
 -----------  -------  ------------  ---------------------- 
 userid       15500    1             0        

【讨论】:

    【解决方案3】:

    调整WHERE 子句以适应:

    select
        a.name as TableName,
        b.name as IdentityColumn
    from
        sysobjects a inner join syscolumns b on a.id = b.id
    where
        columnproperty(a.id, b.name, 'isIdentity') = 1
        and objectproperty(a.id, 'isTable') = 1
    

    【讨论】:

      【解决方案4】:

      作为@Blogbeard 回答的扩展

      如果你喜欢纯查询而不是内置函数

      select col_name(sys.all_objects.object_id, column_id) as id from sys.identity_columns 
      join sys.all_objects on sys.identity_columns.object_id = sys.all_objects.object_id
      where sys.all_objects.name = 'system_files'
      

      【讨论】:

        【解决方案5】:

        标识是用于加载到表中的第一行的值。

        有一篇微软文章可以提供有关身份的良好知识:

        https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-2017

        现在,有几种方法可以识别表中的哪一列是标识列:

        • 我们可以使用sql查询:select columnproperty(object_id('mytable'),'mycolumn','IsIdentity')
        • sp_help 表名

        【讨论】:

          猜你喜欢
          • 2023-03-06
          • 1970-01-01
          • 1970-01-01
          • 2013-04-15
          • 2011-02-21
          • 1970-01-01
          • 2015-04-03
          • 2023-04-08
          • 1970-01-01
          相关资源
          最近更新 更多