将 h2 数据库上列的默认值更改为当前时间戳

Posted

技术标签:

【中文标题】将 h2 数据库上列的默认值更改为当前时间戳【英文标题】:Change default value for column on h2 database to current timestamp 【发布时间】:2013-01-08 14:08:20 【问题描述】:

我有一个 h2 数据库,其架构是通过 JPA/hibernate 自动生成的。现在我想将数据库上的非空timestamp 类型列更改为默认为当前时间。

我实际上使用a trigger,这很有效,但我想知道是否有更优雅的方法来实现这一点,例如(以下 sn-p 工作)

ALTER TABLE my_table ALTER COLUMN my_column SET DEFAULT CURRENT_TIMESTAMP;

我查看了the documentation 并尝试了上述“伪语句”的一些变体,但现在成功了。

【问题讨论】:

我想你想添加 CONSTRAINT + DEFAULT 而不是 ALTER COLUMN 不起作用你的意思是......? 要么是无效的 sql,要么它试图将字符串“CURRENT_TIMESTAMP”解析为真正的时间戳。这绝对不会改变列,因此当我没有为“my_column”提供值时,当前时间 get 在插入时保持不变。 您需要更具体。更改默认值的语法是正确的。并且应用了默认的 is。请参阅此处的示例:pastebin.com/QjUQmaUi 非常感谢,令我惊讶的是,现在,我再次尝试了它,它有效。也许我在第一次运行时有一些错别字。 【参考方案1】:

看起来很接近,你试过吗:

ALTER TABLE <table name> ALTER COLUMN <column name> SET DEFAULT CURRENT_TIMESTAMP

【讨论】:

抱歉,我的问题是错字。我试过“CURRENT_TIMESTAMP”,但不起作用。我会更新我的问题 是的,它有效,谢谢!我“以为”我是那样做的,但显然我犯了一些错误。

以上是关于将 h2 数据库上列的默认值更改为当前时间戳的主要内容,如果未能解决你的问题,请参考以下文章

只要新值与当前值不同,Oracle SQL 将字段的值更改为列表中的其他值?

无法将 colorButtonNormal 值更改为所有按钮

将 CGrect 值更改为用户坐标系

在可排序选项卡中将文本框的值更改为其当前顺序

尝试在 Oracle Sql 中将列值更改为默认值时标识符无效

将数据复制到同一张表和从同一表复制数据,并将复制数据的一列中的值更改为指定值