it-roy-ru.com

SQL - проверка, если столбец автоматически увеличивается

Я пытаюсь выполнить запрос, чтобы проверить, если столбец автоматически увеличивается. Я могу проверить тип, значение по умолчанию, если он обнуляемый или нет, и т.д., Но я не могу понять, как проверить, если он автоматически увеличивается. Вот как я тестирую эти вещи:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'my_table'
AND COLUMN_NAME = 'my_column'
AND DATA_TYPE = 'int'
AND COLUMN_DEFAULT IS NULL
AND IS_NULLABLE = 'NO'
--AND AUTO_INCREMENTS = 'YES'

К сожалению, нет столбца AUTO_INCREMENTS для сравнения. Итак, как я могу проверить, если столбец автоматически увеличивается?

16
Aust

Для MySql проверьте в столбце EXTRA:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'my_table'
    AND COLUMN_NAME = 'my_column'
    AND DATA_TYPE = 'int'
    AND COLUMN_DEFAULT IS NULL
    AND IS_NULLABLE = 'NO'
    AND EXTRA like '%auto_increment%'

Для Sql Server используйте sys.columns и столбец is_identity:

SELECT 
    is_identity
FROM sys.columns
WHERE 
    object_id = object_id('my_table')
    AND name = 'my_column'
40
Michael Fredrickson

Предполагая MySQL, в столбце EXTRA будет указано, является ли он AUTO_INCREMENT.

| TABLE_CATALOG | TABLE_SCHEMA | ... | ЭКСТРА | ... | 
------------------------------------------- ------------------
 | def | db_2_00314 | ... | auto_increment | ... |

А для MSSQL см. Здесь .

8
Kermit

Выполнить: описать 'имя_таблицы'; В колонке EXTRA есть то, что вы ищете

3
Johny

это работает для сервера sql: select COLUMN_NAME, TABLE_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA = 'dbo' and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 order by TABLE_NAME

1
Dalkiel