From f045d5e1b0319105194879d84ecb09ffc7403d1f Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Tue, 4 Jan 2022 10:21:48 +0100 Subject: [PATCH] Migration is a plugin now --- ebean-dbmigration-runner/pom.xml | 73 +--- .../dbmigration/run/DbRunMigrationPlugin.java | 4 +- .../src/main/java9/module-info.java | 11 + .../dbmigration/DbMigrationPlugin.java | 5 +- .../src/main/java9/module-info.java | 4 +- .../MysqlGenerateMigrationTest.java | 82 +---- .../src/test/resources/dbinit/mysql/1.2.sql | 332 +----------------- 7 files changed, 36 insertions(+), 475 deletions(-) create mode 100644 ebean-dbmigration-runner/src/main/java9/module-info.java diff --git a/ebean-dbmigration-runner/pom.xml b/ebean-dbmigration-runner/pom.xml index a57aa2958..7216bb9ff 100644 --- a/ebean-dbmigration-runner/pom.xml +++ b/ebean-dbmigration-runner/pom.xml @@ -13,13 +13,6 @@ - - - io.ebean ebean-migration-auto @@ -38,74 +31,10 @@ ebean-migration 12.12.1 - - - - + - - io.ebean - ebean-maven-plugin - ${ebean-maven-plugin.version} - - - test - process-test-classes - - debug=0 - - - testEnhance - - - - io.repaint.maven tiles-maven-plugin diff --git a/ebean-dbmigration-runner/src/main/java/io/ebeaninternal/dbmigration/run/DbRunMigrationPlugin.java b/ebean-dbmigration-runner/src/main/java/io/ebeaninternal/dbmigration/run/DbRunMigrationPlugin.java index 37ab3987f..6c4066f3c 100644 --- a/ebean-dbmigration-runner/src/main/java/io/ebeaninternal/dbmigration/run/DbRunMigrationPlugin.java +++ b/ebean-dbmigration-runner/src/main/java/io/ebeaninternal/dbmigration/run/DbRunMigrationPlugin.java @@ -43,6 +43,8 @@ public class DbRunMigrationPlugin implements Plugin { @Override public void start() { - migrationRunner.run(server.dataSource()); + if (migrationRunner != null) { + migrationRunner.run(server.dataSource()); + } } } diff --git a/ebean-dbmigration-runner/src/main/java9/module-info.java b/ebean-dbmigration-runner/src/main/java9/module-info.java new file mode 100644 index 000000000..8bf31c0d5 --- /dev/null +++ b/ebean-dbmigration-runner/src/main/java9/module-info.java @@ -0,0 +1,11 @@ +open module io.ebean.dbmigration.runner { + + provides io.ebean.plugin.Plugin with io.ebeaninternal.dbmigration.run.DbRunMigrationPlugin; + + requires transitive io.ebean.ddl.runner; + requires transitive io.ebean.core; + requires transitive java.xml.bind; + requires io.ebean.core.type; + requires io.ebean.migration; + +} diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DbMigrationPlugin.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DbMigrationPlugin.java index 8da7571e2..6d27d530a 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DbMigrationPlugin.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/DbMigrationPlugin.java @@ -2,10 +2,13 @@ package io.ebeaninternal.dbmigration; import java.io.IOException; -import io.ebean.config.DatabaseConfig; import io.ebean.plugin.Plugin; import io.ebean.plugin.SpiServer; +/** + * Plugin to generate db-migration scripts automatically. + * @author Roland Praml, FOCONIS AG + */ public class DbMigrationPlugin implements Plugin { private DefaultDbMigration dbMigration; diff --git a/ebean-ddl-generator/src/main/java9/module-info.java b/ebean-ddl-generator/src/main/java9/module-info.java index 65d58286e..3553b3f58 100644 --- a/ebean-ddl-generator/src/main/java9/module-info.java +++ b/ebean-ddl-generator/src/main/java9/module-info.java @@ -2,8 +2,8 @@ open module io.ebean.ddl.generator { exports io.ebean.dbmigration; - provides io.ebean.dbmigration.DbMigration with io.ebeaninternal.dbmigration.DefaultDbMigration; - provides io.ebeaninternal.api.SpiDdlGeneratorProvider with io.ebeaninternal.dbmigration.DdlGeneratorProvider; + provides io.ebean.plugin.Plugin with io.ebeaninternal.dbmigration.DbMigrationPlugin; + provides io.ebean.plugin.Plugin with io.ebeaninternal.dbmigration.DdlPlugin; requires transitive io.ebean.ddl.runner; requires transitive io.ebean.core; diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java index 50b52bda1..e827eae67 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java @@ -6,6 +6,7 @@ import io.ebean.config.DatabaseConfig; import org.junit.jupiter.api.Test; import java.io.File; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -31,15 +32,17 @@ public class MysqlGenerateMigrationTest { config.loadFromProperties(); config.setRegister(false); config.setDefaultServer(false); + config.getPlatformConfig().setUseMigrationStoredProcedures(true); + config.setRunMigration(false); config.getProperties().put("ebean.migrationtest.migration.pathToResources", pathToResources); - config.getProperties().put("ebean.migrationtest.useMigrationStoredProcedures", true); config.getProperties().put("ebean.migrationtest.migration.platforms", "mysql"); config.getProperties().put("ebean.migrationtest.migration.migrationPath", "dbmigration/migrationtest-procedures/"); - config.setPackages(Arrays.asList("misc.migration.v1_0")); + config.setPackages(Arrays.asList("misc.migration.mysql_v1_0")); // First, we clean up the output-directory -// Files.walk(Paths.get(pathToResources , "dbmigration","migrationtest-procedures")) -// .filter(Files::isRegularFile).map(Path::toFile).forEach(File::delete); + Path path = Paths.get(pathToResources , "dbmigration","migrationtest-procedures"); + Files.walk(path) + .filter(Files::isRegularFile).map(Path::toFile).forEach(File::delete); DatabaseFactory.create(config).shutdown(); @@ -47,75 +50,18 @@ public class MysqlGenerateMigrationTest { assertThat(DbMigrationPlugin.getLastMigration()).isEqualTo("1.0__initial"); assertThat(DbMigrationPlugin.getLastInit()).isEqualTo("1.0__initial"); - // and we check repeatative calls - DatabaseFactory.create(config).shutdown(); - assertThat(DbMigrationPlugin.getLastMigration()).isNull(); - assertThat(DbMigrationPlugin.getLastInit()).isNull(); // and now for v1_1 - config.setPackages(Arrays.asList("misc.migration.v1_1")); + config.setPackages(Arrays.asList("misc.migration.mysql_v1_1")); DatabaseFactory.create(config).shutdown(); assertThat(DbMigrationPlugin.getLastMigration()).isEqualTo("1.1,1.2__dropsFor_1.1"); assertThat(DbMigrationPlugin.getLastInit()).isEqualTo("1.2"); + + final Path sqlFile = path.resolve("mysql/1.2__dropsFor_1.1.sql"); -// // subsequent call -// DatabaseFactory.create(config).shutdown(); -// assertThat(DbMigrationPlugin.getLastMigration()).isNull(); -// assertThat(DbMigrationPlugin.getLastInit()).isNull(); -// -// // and now for v1_2 -// config.setPackages(Arrays.asList("misc.migration.v1_2")); -// DatabaseFactory.create(config).shutdown(); -// assertThat(DbMigrationPlugin.getLastMigration()).isEqualTo("1.3,1.4__dropsFor_1.3"); -// assertThat(DbMigrationPlugin.getLastInit()).isEqualTo("1.4"); -// -// -// DefaultDbMigration migration = new DefaultDbMigration(); -// migration.setIncludeIndex(true); -// // We use src/test/resources as output directory (so we see in GIT if files will change) -// migration.setPathToResources("src/test/resources"); -// -// migration.addPlatform(Platform.MYSQL, "mysql"); -// -// final PlatformConfig platformConfig = new PlatformConfig(); -// platformConfig.setUseMigrationStoredProcedures(true); -// -// DatabaseConfig config = new DatabaseConfig(); -// config.setName("migrationtest"); -// config.loadFromProperties(); -// config.setPlatformConfig(platformConfig); -// config.setRegister(false); -// config.setDefaultServer(false); -// config.getProperties().put("ebean.migration.migrationPath", "db/migration/mysql"); -// -// config.setPackages(Arrays.asList("misc.migration.mysql_v1_0")); -// Database server = DatabaseFactory.create(config); -// migration.setServer(server); -// migration.setMigrationPath("mysql/procedures"); -// -// // First, we clean up the output-directory -// assertThat(migration.migrationDirectory().getAbsolutePath()).contains("procedures"); -// Files.walk(migration.migrationDirectory().toPath()) -// .filter(Files::isRegularFile) -// .map(Path::toFile).forEach(File::delete); -// -// // then we generate migration scripts for v1_0 -// assertThat(migration.generateMigration()).isEqualTo("1.0__initial"); -// -// config.setPackages(Arrays.asList("misc.migration.mysql_v1_1")); -// server.shutdown(); -// server = DatabaseFactory.create(config); -// migration.setServer(server); -// migration.setMigrationPath("mysql/procedures"); -// assertThat(migration.generateMigration()).isEqualTo("1.1,1.2__dropsFor_1.1"); -// -// final Path sqlFile = migration.migrationDirectory().toPath() -// .resolve("mysql/1.2__dropsFor_1.1.sql"); -// -// assertThat(sqlFile).isNotEmptyFile(); -// assertThat(Files.readAllLines(sqlFile, StandardCharsets.UTF_8)) -// .contains("CALL usp_ebean_drop_column('migtest_e_basic', 'status2');") -// .contains("CALL usp_ebean_drop_column('migtest_e_basic', 'description');"); - + assertThat(sqlFile).isNotEmptyFile(); + assertThat(Files.readAllLines(sqlFile, StandardCharsets.UTF_8)) + .contains("CALL usp_ebean_drop_column('migtest_e_basic', 'status2');") + .contains("CALL usp_ebean_drop_column('migtest_e_basic', 'description');"); } } diff --git a/ebean-ddl-generator/src/test/resources/dbinit/mysql/1.2.sql b/ebean-ddl-generator/src/test/resources/dbinit/mysql/1.2.sql index 9b95d8c68..ba478f705 100644 --- a/ebean-ddl-generator/src/test/resources/dbinit/mysql/1.2.sql +++ b/ebean-ddl-generator/src/test/resources/dbinit/mysql/1.2.sql @@ -1,339 +1,9 @@ -- Migrationscripts for ebean unittest -- apply changes -create table migtest_ckey_assoc ( - id integer auto_increment not null, - assoc_one varchar(255), - constraint pk_migtest_ckey_assoc primary key (id) -); - -create table migtest_ckey_detail ( - id integer auto_increment not null, - something varchar(255), - one_key integer, - two_key varchar(127), - constraint pk_migtest_ckey_detail primary key (id) -); - -create table migtest_ckey_parent ( - one_key integer not null, - two_key varchar(127) not null, - name varchar(255), - assoc_id integer, - version integer not null, - constraint pk_migtest_ckey_parent primary key (one_key,two_key) -); - -create table migtest_fk_cascade ( - id bigint auto_increment not null, - one_id bigint, - constraint pk_migtest_fk_cascade primary key (id) -); - -create table migtest_fk_cascade_one ( - id bigint auto_increment not null, - constraint pk_migtest_fk_cascade_one primary key (id) -); - -create table migtest_fk_none ( - id bigint auto_increment not null, - one_id bigint, - constraint pk_migtest_fk_none primary key (id) -); - -create table migtest_fk_none_via_join ( - id bigint auto_increment not null, - one_id bigint, - constraint pk_migtest_fk_none_via_join primary key (id) -); - -create table migtest_fk_one ( - id bigint auto_increment not null, - constraint pk_migtest_fk_one primary key (id) -); - -create table migtest_fk_set_null ( - id bigint auto_increment not null, - one_id bigint, - constraint pk_migtest_fk_set_null primary key (id) -); - create table migtest_e_basic ( id integer auto_increment not null, - status varchar(1) default 'A' not null, - status2 varchar(127), + status varchar(1), name varchar(127), - description varchar(127), - some_date datetime(6), - new_string_field varchar(255) default 'foo''bar' not null, - new_boolean_field tinyint(1) default 1 not null, - new_boolean_field2 tinyint(1) default 1 not null, - indextest1 varchar(127), - indextest2 varchar(127), - indextest3 varchar(127), - indextest4 varchar(127), - indextest5 varchar(127), - indextest6 varchar(127), - progress integer default 0 not null, - new_integer integer default 42 not null, - user_id integer, - constraint uq_migtest_e_basic_description unique (description), - constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1), - constraint uq_migtest_e_basic_name unique (name), - constraint uq_migtest_e_basic_indextest4 unique (indextest4), - constraint uq_migtest_e_basic_indextest5 unique (indextest5), constraint pk_migtest_e_basic primary key (id) ); -create table migtest_e_enum ( - id integer auto_increment not null, - test_status varchar(1), - constraint pk_migtest_e_enum primary key (id) -); - -create table migtest_e_history ( - id integer auto_increment not null, - test_string bigint comment 'Column altered to long now', - constraint pk_migtest_e_history primary key (id) -) comment='We have history now'; - -create table migtest_e_history2 ( - id integer auto_increment not null, - test_string varchar(255) default 'unknown' not null, - test_string2 varchar(255), - test_string3 varchar(255) default 'unknown' not null, - new_column varchar(20), - constraint pk_migtest_e_history2 primary key (id) -); - -create table migtest_e_history3 ( - id integer auto_increment not null, - test_string varchar(255), - constraint pk_migtest_e_history3 primary key (id) -); - -create table migtest_e_history4 ( - id integer auto_increment not null, - test_number bigint, - constraint pk_migtest_e_history4 primary key (id) -); - -create table migtest_e_history5 ( - id integer auto_increment not null, - test_number integer, - test_boolean tinyint(1) default 0 not null, - constraint pk_migtest_e_history5 primary key (id) -); - -create table migtest_e_history6 ( - id integer auto_increment not null, - test_number1 integer default 42 not null, - test_number2 integer, - constraint pk_migtest_e_history6 primary key (id) -); - -create table migtest_e_softdelete ( - id integer auto_increment not null, - test_string varchar(255), - deleted tinyint(1) default 0 not null, - constraint pk_migtest_e_softdelete primary key (id) -); - -create table migtest_e_user ( - id integer auto_increment not null, - constraint pk_migtest_e_user primary key (id) -); - -create table migtest_mtm_c ( - id integer auto_increment not null, - name varchar(255), - constraint pk_migtest_mtm_c primary key (id) -); - -create table migtest_mtm_c_migtest_mtm_m ( - migtest_mtm_c_id integer not null, - migtest_mtm_m_id bigint not null, - constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id) -); - -create table migtest_mtm_m ( - id bigint auto_increment not null, - name varchar(255), - constraint pk_migtest_mtm_m primary key (id) -); - -create table migtest_mtm_m_migtest_mtm_c ( - migtest_mtm_m_id bigint not null, - migtest_mtm_c_id integer not null, - constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id) -); - -create table migtest_oto_child ( - id integer auto_increment not null, - name varchar(255), - master_id bigint, - constraint uq_migtest_oto_child_master_id unique (master_id), - constraint pk_migtest_oto_child primary key (id) -); - -create table migtest_oto_master ( - id bigint auto_increment not null, - name varchar(255), - constraint pk_migtest_oto_master primary key (id) -); - -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); -create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key); -alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict; - -create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id); -alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict; - -create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); -alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict; - -create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id); -alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; - -create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id); -alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; - -create index ix_migtest_fk_set_null_one_id on migtest_fk_set_null (one_id); -alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; - -create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id); -alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; - -create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); -alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; - -create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id); -alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict; - -create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id); -alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict; - -create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id); -alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; - -alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; - -alter table migtest_e_history add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history add column sys_period_end datetime(6); -create table migtest_e_history_history( - id integer, - test_string bigint, - sys_period_start datetime(6), - sys_period_end datetime(6) -); -create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history; - -alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history2 add column sys_period_end datetime(6); -create table migtest_e_history2_history( - id integer, - test_string varchar(255), - test_string2 varchar(255), - test_string3 varchar(255), - new_column varchar(20), - sys_period_start datetime(6), - sys_period_end datetime(6) -); -create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; - -alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history3 add column sys_period_end datetime(6); -create table migtest_e_history3_history( - id integer, - test_string varchar(255), - sys_period_start datetime(6), - sys_period_end datetime(6) -); -create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; - -alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history4 add column sys_period_end datetime(6); -create table migtest_e_history4_history( - id integer, - test_number bigint, - sys_period_start datetime(6), - sys_period_end datetime(6) -); -create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; - -alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history5 add column sys_period_end datetime(6); -create table migtest_e_history5_history( - id integer, - test_number integer, - test_boolean tinyint(1), - sys_period_start datetime(6), - sys_period_end datetime(6) -); -create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; - -alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history6 add column sys_period_end datetime(6); -create table migtest_e_history6_history( - id integer, - test_number1 integer, - test_number2 integer, - sys_period_start datetime(6), - sys_period_end datetime(6) -); -create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; - -delimiter $$ -create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin - insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string); - set NEW.sys_period_start = now(6); -end$$ -delimiter $$ -create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin - insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string); -end$$ -delimiter $$ -create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin - insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column); - set NEW.sys_period_start = now(6); -end$$ -delimiter $$ -create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin - insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column); -end$$ -delimiter $$ -create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin - insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id); - set NEW.sys_period_start = now(6); -end$$ -delimiter $$ -create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin - insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id); -end$$ -delimiter $$ -create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin - insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number); - set NEW.sys_period_start = now(6); -end$$ -delimiter $$ -create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin - insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number); -end$$ -delimiter $$ -create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin - insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean); - set NEW.sys_period_start = now(6); -end$$ -delimiter $$ -create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin - insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean); -end$$ -delimiter $$ -create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin - insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2); - set NEW.sys_period_start = now(6); -end$$ -delimiter $$ -create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin - insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2); -end$$