HSQLDB 2.4 如何使用 UNIX_MILLIS() 作为 BIGINT 列的默认值
HSQLDB 2.4 How to use UNIX_MILLIS() as default value for BIGINT column
我运行下一个SQL(JDBC)
CREATE TABLE IF NOT EXISTS PUBLIC.MY_DATA(
ID BIGINT IDENTITY PRIMARY KEY NOT NULL,
...,
LAST_MODIFIED BIGINT DEFAULT UNIX_MILLIS() NOT NULL)
并得到 SQLSyntaxErrorException: unexpected token: UNIX_MILLIS
但是根据documentation
UNIX_MILLIS ( [ ] )
This function returns a BIGINT value. With no parameter, it returns the number of milliseconds since 1970-01-01. With a DATE or TIMESTAMP parameter, it converts the argument into number of milliseconds since 1970-01-01. (HyperSQL)
感谢任何帮助
查看 DEFAULT
子句的定义(在 table creation 中),事实上那里允许的内容仅限于
<default option> ::= <literal> | <datetime value function> | USER
| CURRENT_USER | CURRENT_ROLE | SESSION_USER | SYSTEM_USER |
CURRENT_CATALOG | CURRENT_SCHEMA | CURRENT_PATH | NULL
而<datetime value function>
定义为
datetime value function
<datetime value function> ::= ...
Specify a function that returns a datetime value. The supported
datetime value functions are listed and described in the Built In
Functions chapter.
由于 UNIX_MILLIS
不是 return 日期时间值,而是 BIGINT
,因此 UNIX_MILLIS
完全有可能不被视为 <datetime value function>
,因此在 DEFAULT
子句中不可用。
这似乎可以通过查看 parser of the default clause 得到支持,它根据结果类型过滤允许的表达式。
提示一下,我还没有测试过,但启用 PostgreSQL 兼容模式可能允许您使用 DEFAULT UNIX_TIME()
或者 DEFAULT (UNIX_TIME())
.
我运行下一个SQL(JDBC)
CREATE TABLE IF NOT EXISTS PUBLIC.MY_DATA(
ID BIGINT IDENTITY PRIMARY KEY NOT NULL,
...,
LAST_MODIFIED BIGINT DEFAULT UNIX_MILLIS() NOT NULL)
并得到 SQLSyntaxErrorException: unexpected token: UNIX_MILLIS
但是根据documentation
UNIX_MILLIS ( [ ] )
This function returns a BIGINT value. With no parameter, it returns the number of milliseconds since 1970-01-01. With a DATE or TIMESTAMP parameter, it converts the argument into number of milliseconds since 1970-01-01. (HyperSQL)
感谢任何帮助
查看 DEFAULT
子句的定义(在 table creation 中),事实上那里允许的内容仅限于
<default option> ::= <literal> | <datetime value function> | USER | CURRENT_USER | CURRENT_ROLE | SESSION_USER | SYSTEM_USER | CURRENT_CATALOG | CURRENT_SCHEMA | CURRENT_PATH | NULL
而<datetime value function>
定义为
datetime value function
<datetime value function> ::= ...
Specify a function that returns a datetime value. The supported datetime value functions are listed and described in the Built In Functions chapter.
由于 UNIX_MILLIS
不是 return 日期时间值,而是 BIGINT
,因此 UNIX_MILLIS
完全有可能不被视为 <datetime value function>
,因此在 DEFAULT
子句中不可用。
这似乎可以通过查看 parser of the default clause 得到支持,它根据结果类型过滤允许的表达式。
提示一下,我还没有测试过,但启用 PostgreSQL 兼容模式可能允许您使用 DEFAULT UNIX_TIME()
或者 DEFAULT (UNIX_TIME())
.