Ich versuche, eine SQL Server- und Oracle-Datenbank abzufragen, um Tabellendaten zu erhalten, die angeben, ob eine Spalte automatisch inkrementiert wird oder nicht. Ich würde annehmen, dass man in den Tabellen "information_schema.columns" und "user_tab_cols" nachsehen würde, aber diese Informationen scheinen dort nicht enthalten zu sein. Weiß jemand, wo ich diese Informationen abrufen kann?
Antworten
Zu viele Anzeigen?Um eine bestimmte Spalte in SQL Server zu überprüfen:
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'
oder um alle Identitätsspalten zu finden
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
SQLMenace
Punkte
128184
Ein Weg in Sql-Server, wird dies alle Spalten, die Identität haben zurückgeben
select OBJECT_NAME(id) as Tablename, name as ColumnName,*
from syscolumns
where COLUMNPROPERTY(id, name, 'IsIdentity') = 1
Oder durch Verwendung von information_schema
select TABLE_SCHEMA + '.' + TABLE_NAME,COLUMN_NAME
from INFORMATION_SCHEMA.columns
where COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME),
COLUMN_NAME, 'IsIdentity') = 1