如何在 HSQLDB 1.8 中查找表的标识列
Posted
技术标签:
【中文标题】如何在 HSQLDB 1.8 中查找表的标识列【英文标题】:How to find identity columns of a table in HSQLDB 1.8 【发布时间】:2014-05-08 10:43:50 【问题描述】:在 DB2 中,可以借助以下查询来完成,但我在 HSQLDB 中找不到这样做的方法
SELECT COLNAME FROM SYSCAT.COLUMNS WHERE IDENTITY = 'Y' AND TABNAME='XXX'.
以下是我可以看到的表 SYSTEM_COLUMNS 的列,我无法确定其中哪一个表明它是标识列
TYPE_SUB
TYPE_NAME
TABLE_SCHEM
TABLE_NAME
TABLE_CAT
SQL_DATETIME_SUB
SQL_DATA_TYPE
SOURCE_DATA_TYPE
SCOPE_TABLE
SCOPE_SCHEMA
SCOPE_CATLOG
备注
ORDINAL_POSITION
NUM_PREC_RADIX
可为空
IS_NULLABLE
DECIMAL_DIGITS
DATA_TYPE
COLUMN_SIZE
COLUMN_NAME
COLUMN_DEF
CHAR_OCTET_LENGTH
BUFFER_LENGTH
【问题讨论】:
身份列是什么意思?组成主键的列? 我的意思是有一个列的值是由数据库标识符生成器生成的,如序列、hilo、增量。 【参考方案1】:应该这样做:
select column_name,
generation_expression,
is_generated,
is_identity,
identity_generation,
identity_start,
identity_increment
from information_schema.columns
where table_name = 'XXX'
and table_schema = 'PUBLIC'
and is_identity = 'YES'
【讨论】:
这不适用于 hsqldb 1.8 版,有什么帮助吗? @AlokChandna:您应该提到您使用的是完全过时的 HSQLDB 版本。系统视图当时被命名为INFORMATION_SCHEMA.SYSTEM_COLUMNS
是的,我知道了,但它没有 is_identity 列
@AlokChandna:那我不知道。那是很久以前的事了。
is_generated
不应该是同一个意思吗?以上是关于如何在 HSQLDB 1.8 中查找表的标识列的主要内容,如果未能解决你的问题,请参考以下文章