将 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 值更改为所有按钮