Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you determine what SQL Tables have an identity column programmatically

People also ask

How do you know if a table has an identity column?

Call this stored procedure using the datareader role, then check datareader. hasrows() . If the condition value is true ( 1 ), then the table has identity column if set. If not then it doesn't have an identity column.

How do I find the identity specification in SQL Server?

You could use the SQL Server-specific tables or views (depending on your version of SQL Server) like syscolumns / sys. columns .

How do I select an identity column in SQL Server?

We can use the SQL IDENTITY function to insert identity values in the table created by SQL SELECT INTO statement. By default, if a source table contains an IDENTITY column, then the table created using a SELECT INTO statement inherits it.


Another potential way to do this for SQL Server, which has less reliance on the system tables (which are subject to change, version to version) is to use the INFORMATION_SCHEMA views:

select COLUMN_NAME, TABLE_NAME
from INFORMATION_SCHEMA.COLUMNS
where COLUMNPROPERTY(object_id(TABLE_SCHEMA+'.'+TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
order by TABLE_NAME 

sys.columns.is_identity = 1

e.g.,

select o.name, c.name
from sys.objects o inner join sys.columns c on o.object_id = c.object_id
where c.is_identity = 1

Another way (for 2000 / 2005/2012/2014):

IF ((SELECT OBJECTPROPERTY( OBJECT_ID(N'table_name_here'), 'TableHasIdentity')) = 1)
    PRINT 'Yes'
ELSE
    PRINT 'No'

NOTE: table_name_here should be schema.table, unless the schema is dbo.


In SQL 2005:

select object_name(object_id), name
from sys.columns
where is_identity = 1

This query seems to do the trick:

SELECT 
    sys.objects.name AS table_name, 
    sys.columns.name AS column_name
FROM sys.columns JOIN sys.objects 
    ON sys.columns.object_id=sys.objects.object_id
WHERE 
    sys.columns.is_identity=1
    AND
    sys.objects.type in (N'U')