From 9a018b6af9fac023e717825f5dd346e912227504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=BB=84=E6=9E=97?= Date: Sat, 28 Feb 2026 14:03:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BE=BE=E6=A2=A6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E4=B8=8B=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E8=A1=A8=E6=97=B6=E4=B8=8D=E4=BC=9A=E8=87=AA=E5=8A=A8=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yanghuanglin/seq/dao/impl/SequencesBase.java | 7 +++++-- .../com/yanghuanglin/seq/dao/impl/SequencesDaoImpl.java | 4 +++- src/main/resources/dm/create_table_sequences_trigger.sql | 8 ++++++++ src/main/resources/mysql/create_table_sequences.sql | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/dm/create_table_sequences_trigger.sql diff --git a/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java b/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java index 4b92e7e..80c65e5 100644 --- a/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java +++ b/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesBase.java @@ -63,8 +63,11 @@ public abstract class SequencesBase { } InputStream inputStream = new ByteArrayInputStream(sql.getBytes(StandardCharsets.UTF_8)); 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.execute(dataSource); diff --git a/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesDaoImpl.java b/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesDaoImpl.java index 07af529..7293a2e 100644 --- a/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesDaoImpl.java +++ b/src/main/java/com/yanghuanglin/seq/dao/impl/SequencesDaoImpl.java @@ -58,7 +58,9 @@ public class SequencesDaoImpl extends SequencesBase implements SequencesDao { @Override public void createTable() { 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_trigger.sql"); } diff --git a/src/main/resources/dm/create_table_sequences_trigger.sql b/src/main/resources/dm/create_table_sequences_trigger.sql new file mode 100644 index 0000000..25f0b7d --- /dev/null +++ b/src/main/resources/dm/create_table_sequences_trigger.sql @@ -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; \ No newline at end of file diff --git a/src/main/resources/mysql/create_table_sequences.sql b/src/main/resources/mysql/create_table_sequences.sql index ff8c9a4..392d8b2 100644 --- a/src/main/resources/mysql/create_table_sequences.sql +++ b/src/main/resources/mysql/create_table_sequences.sql @@ -3,6 +3,6 @@ CREATE TABLE IF NOT EXISTS `sequences` `key` VARCHAR(64) NOT NULL COMMENT '序号英文名称', `type` VARCHAR(64) 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`) ) COMMENT '当前序号表'; \ No newline at end of file