25

我正在尝试运行查询以检查列是否自动递增。我可以检查类型、默认值、它是否可以为空等,但我不知道如何测试它是否自动递增。以下是我测试其他内容的方式:

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可比较的列。那么如何测试列是否自动递增?

4

4 回答 4

58

对于 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.columnsis_identity列:

SELECT 
    is_identity
FROM sys.columns
WHERE 
    object_id = object_id('my_table')
    AND name = 'my_column'
于 2012-12-07T22:31:01.217 回答
11

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

| 表目录 | 表模式 | ... | 额外 | ... |
-------------------------------------------------- ------------
| 定义 | db_2_00314 | ... | 自动增量 | ... |

对于 MSSQL,请参见此处

于 2012-12-07T22:30:04.543 回答
4

这适用于 sql server:

    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
于 2013-08-31T00:49:54.977 回答
3

运行:描述'table_name';在 EXTRA 列中,您正在寻找

于 2013-11-22T21:40:39.713 回答