修复达梦数据库下自动创建表时不会自动变更更新时间问题

This commit is contained in:
杨黄林
2026-02-28 14:03:58 +08:00
parent 64724de96c
commit 9a018b6af9
4 changed files with 17 additions and 4 deletions

View File

@@ -63,8 +63,11 @@ public abstract class SequencesBase {
} }
InputStream inputStream = new ByteArrayInputStream(sql.getBytes(StandardCharsets.UTF_8)); InputStream inputStream = new ByteArrayInputStream(sql.getBytes(StandardCharsets.UTF_8));
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(new InputStreamResource(inputStream)); ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(new InputStreamResource(inputStream));
if (Objects.equals(dbType.getSeries(), DbType.PostgreSQL.getSeries()) && fileName.endsWith("function.sql")) { if (Objects.equals(dbType.getSeries(), DbType.DM_DBMS.getSeries()) && fileName.endsWith("trigger.sql")) {
// 函数文件只能有一个函数,并且函数文件不要通过;分隔 // 触发器文件不要通过;分隔,整个文件一起执行
databasePopulator.setSeparator(ScriptUtils.EOF_STATEMENT_SEPARATOR);
} else if (Objects.equals(dbType.getSeries(), DbType.PostgreSQL.getSeries()) && fileName.endsWith("function.sql")) {
// 函数文件不要通过;分隔,整个文件一起执行
databasePopulator.setSeparator(ScriptUtils.EOF_STATEMENT_SEPARATOR); databasePopulator.setSeparator(ScriptUtils.EOF_STATEMENT_SEPARATOR);
} }
databasePopulator.execute(dataSource); databasePopulator.execute(dataSource);

View File

@@ -58,7 +58,9 @@ public class SequencesDaoImpl extends SequencesBase implements SequencesDao {
@Override @Override
public void createTable() { public void createTable() {
this.createTableByFile("create_table_sequences.sql"); this.createTableByFile("create_table_sequences.sql");
if (Objects.equals(dbType.getSeries(), DbType.PostgreSQL.getSeries())) { if (Objects.equals(dbType.getSeries(), DbType.DM_DBMS.getSeries())) {
this.createTableByFile("create_table_sequences_trigger.sql");
} else if (Objects.equals(dbType.getSeries(), DbType.PostgreSQL.getSeries())) {
this.createTableByFile("create_table_sequences_function.sql"); this.createTableByFile("create_table_sequences_function.sql");
this.createTableByFile("create_table_sequences_trigger.sql"); this.createTableByFile("create_table_sequences_trigger.sql");
} }

View File

@@ -0,0 +1,8 @@
CREATE OR REPLACE TRIGGER "SEQUENCES_UPDATE_TIME"
BEFORE UPDATE
ON "sequences"
referencing OLD ROW AS "OLD" NEW ROW AS "NEW"
FOR EACH ROW
BEGIN
:NEW."UPDATE_TIME" := CURRENT_TIMESTAMP;
END;

View File

@@ -3,6 +3,6 @@ CREATE TABLE IF NOT EXISTS `sequences`
`key` VARCHAR(64) NOT NULL COMMENT '序号英文名称', `key` VARCHAR(64) NOT NULL COMMENT '序号英文名称',
`type` VARCHAR(64) NOT NULL COMMENT '序号类型', `type` VARCHAR(64) NOT NULL COMMENT '序号类型',
`seq` BIGINT(20) NOT NULL COMMENT '已使用到的序号', `seq` BIGINT(20) NOT NULL COMMENT '已使用到的序号',
`update_time` DATETIME NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '最后使用时间', `update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后使用时间',
PRIMARY KEY (`key`, `type`) PRIMARY KEY (`key`, `type`)
) COMMENT '当前序号表'; ) COMMENT '当前序号表';