列が自動的に増加するかどうかを確認するクエリを実行しようとしています。タイプ、デフォルト値、null可能かどうかなどを確認できますが、自動インクリメントかどうかをテストする方法がわかりません。ここに私がそれらの他のものについてテストしている方法があります:
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
比較する列。では、列が自動インクリメントするかどうかをどのようにテストできますか?
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'
MySQLを想定すると、EXTRA
列はそれがAUTO_INCREMENT
かどうかを示します。
| TABLE_CATALOG | TABLE_SCHEMA | ... |追加| ... | ----------------------------------------- -------------------- | def | db_2_00314 | ... | auto_increment | ... |
また、MSSQLの場合は ここを参照 です。
これは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
次を実行:describe 'table_name';列のEXTRAはあなたが探しているものです