如何在H2数据库的CREATE TABLE请求中执行ON UPDATE。
上下文:
我正在使用sql-maven-plugin (1.5)在我的项目的h2数据库中生成表。
但是当我调用脚本sql时,我得到了一个org.h2.message.DbException.getJdbcSQLException。
我的脚本:
CREATE TABLE IF NOT EXISTS TEST(
DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);发布于 2011-11-04 17:29:58
H2不支持“更新时”。但我猜你可以用computed column代替?:
CREATE TABLE IF NOT EXISTS TEST(
DATE timestamp AS CURRENT_TIMESTAMP
);发布于 2019-03-12 16:27:20
从1.4.197版本(2018年3月18日发布)开始,H2支持“更新时”,Query中的查询应该可以很好地工作,就像我们的项目中的这个:
last_modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,我发现这要归功于评论:
H2DB - script SQL ON UPDATE in CREATE TABLE request
H2DB - script SQL ON UPDATE in CREATE TABLE request
所以也请给他们加票。
详细信息:
发布于 2018-02-07 09:52:04
添加到您的SQL文件中:
CREATE TABLE IF NOT EXISTS my_table (
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TRIGGER my_trigger
BEFORE UPDATE
ON my_table
FOR EACH ROW CALL "org.h2.trigger.UpdatedAtTrigger";创建一个Java类并添加到您的测试类路径中:
package org.h2.trigger;
import java.sql.*;
import java.time.Instant;
import org.h2.tools.TriggerAdapter;
public class UpdatedAtTrigger extends TriggerAdapter {
@Override
public void fire(Connection conn, ResultSet oldRow, ResultSet newRow) throws SQLException {
newRow.updateTimestamp("updated_at", Timestamp.from(Instant.now()));
}
}https://stackoverflow.com/questions/8006855
复制相似问题