TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 字段类型定义与mysql差异

【 使用环境 】测试环境
【 使用版本 】ob4.1社区版
【问题描述】
创建测试表
CREATE TABLE test (
AID BIGINT(20) NOT NULL COMMENT ‘唯一标识’,
UPDATE_TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (AID)
)

执行插入语句
INSERT INTO test (aid, UPDATE_TIME) VALUES (3, NULL);

上面语句在mysql上可以成功执行,执行后UPDATE_TIME更新成了当前时间
但是在OceanBase上执行失败,报错:Column ‘UPDATE_TIME’ cannot be null

因为这个差异会造成我们应用层的大量修改适配工作,所以想问下oceanbase这块有什么配置可以兼容吗,可以想mysql一样执行成功

我们内部测试下

这里建表语句里声明了UPDATE_TIME not null,在ob侧是符合预期的
在ob里可以
CREATE TABLE test_time (
AID BIGINT(20) NOT NULL COMMENT ‘唯一标识’,
UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (AID)
);

INSERT INTO test_time (aid, UPDATE_TIME) VALUES (3, CURRENT_TIMESTAMP);

也就是说OB目前只能按照现not null去报错处理是不?

是的