BilgeAdam’daki eski öğrencilerimden biri şu soruyu sordu; “Herhangi bir veritabanındaki tüm tablolarda bulunan Identity Sütunları belirlemenin bir yolu var mıdır?”
Aslında bir değil, tam üç yolu var;
Yöntem 1 : COLUMNPROPERTY fonksiyonunu kullanmak
SELECT
TABLE_NAME,
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'ISIDENTITY') = 1
ORDER BY
TABLE_NAME
Yöntem 2 : SYS.ALL_COLUMNS View’unu kullanmak
SELECT
OBJECT_NAME(AC.OBJECT_ID),
SO.NAME
FROM
SYS.ALL_COLUMNS AS AC
INNER JOIN SYS.OBJECTS AS SO ON OBJECT_NAME(AC.OBJECT_ID) = SO.NAME
WHERE
AC.IS_IDENTITY = 1 AND
SO.TYPE = 'U'
Aynı yöntemi biraz faklı olarak şöyle de yazabiliriz;
SELECT
OBJECT_NAME(OBJECT_ID),
NAME
FROM
SYS.ALL_COLUMNS
WHERE
IS_IDENTITY = 1 AND
OBJECTPROPERTY(OBJECT_ID, 'ISUSERTABLE') = 1
Yöntem 3 : SYS.IDENTITY_COLUMNS View’unu kullanmak
SELECT
OBJECT_NAME(IC.OBJECT_ID),
SO.NAME
FROM
sys.identity_columns AS IC
INNER JOIN SYS.OBJECTS AS SO ON OBJECT_NAME(IC.OBJECT_ID) = SO.NAME
WHERE
SO.TYPE = 'U'
Aynı yöntemi biraz faklı olarak şöyle de yazabiliriz;
SELECT
OBJECT_NAME(OBJECT_ID),
NAME
FROM
sys.identity_columns
WHERE
OBJECTPROPERTY(OBJECT_ID, 'ISUSERTABLE') = 1