SQL - 检查列是否自动递增

Aus*_*ust 20 mysql sql sql-server auto-increment

我正在尝试运行查询以检查列是否自动递增.我可以检查类型,默认值,它是否可以为空等等,但我无法弄清楚如何自动递增测试.这是我如何测试其他东西:

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'
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有AUTO_INCREMENTS可比较的列.那么如何测试列自动递增?

Mic*_*son 47

对于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%'
Run Code Online (Sandbox Code Playgroud)

对于Sql Server,使用sys.columnsis_identity列:

SELECT 
    is_identity
FROM sys.columns
WHERE 
    object_id = object_id('my_table')
    AND name = 'my_column'
Run Code Online (Sandbox Code Playgroud)

  • 对于 SQL Server 不正确,因为当标识插入设置为 ON 时,您可以拥有一个不会自动递增的标识列 (3认同)

Ker*_*mit 9

假设MySQL,该EXTRA列将指示它是否是AUTO_INCREMENT.

| TABLE_CATALOG | TABLE_SCHEMA | ... |          EXTRA | ... |
-------------------------------------------------------------
|           def |   db_2_00314 | ... | auto_increment | ... |

对于MSSQL,请看这里.