Sql server 查询SQL Server/Oracle数据库表数据-标识列

Sql server 查询SQL Server/Oracle数据库表数据-标识列,sql-server,oracle,identity,Sql Server,Oracle,Identity,我正在尝试查询SQLServer和Oracle数据库,以获取表数据,该表数据将指示列是否为自动递增。我假设您会查看“information\u schema.columns”和“user\u tab\u cols”表,但它似乎不包含这些信息。有人知道我在哪里可以检索这些信息吗 在sql server中,这将返回所有具有标识的列 select OBJECT_NAME(id) as Tablename, name as ColumnName,* from syscolumns

我正在尝试查询SQLServer和Oracle数据库,以获取表数据,该表数据将指示列是否为自动递增。我假设您会查看“information\u schema.columns”和“user\u tab\u cols”表,但它似乎不包含这些信息。有人知道我在哪里可以检索这些信息吗

在sql server中,这将返回所有具有标识的列

    select OBJECT_NAME(id) as Tablename, name as ColumnName,*
    from syscolumns
   where COLUMNPROPERTY(id, name, 'IsIdentity') = 1
或者使用信息模式

select TABLE_SCHEMA + '.' + TABLE_NAME,COLUMN_NAME
 from INFORMATION_SCHEMA.columns
where COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), 
   COLUMN_NAME, 'IsIdentity') = 1

要检查SQL Server中的特定列,请执行以下操作:

select t.name as tableName, c.name as columnName, c.is_identity 
    from sys.columns c
        inner join sys.tables t
            on c.object_id = t.object_id
    where t.name = 'YourTable'
        and c.name = 'YourColumn'
或查找所有标识列

select t.name as tableName, c.name as columnName, c.is_identity 
    from sys.columns c
        inner join sys.tables t
            on c.object_id = t.object_id
    where c.is_identity = 1

Oracle没有标识列—它使用称为序列的对象,并且它们不附加到列。