OK, let's test it with JDBC: import java.sql.*; import org.h2.api.Trigger; public class TestTrigger { public static class T implements Trigger { @Override public void init(Connection conn, String schemaName, String triggerName, String tableName, boolean before, int type) throws SQLException {}
@Override public void fire(Connection conn, Object[] oldRow, Object[] newRow) throws SQLException { newRow[1] = 1; } @Override public void close() throws SQLException {} @Override public void remove() throws SQLException {} } public static void main(String[] args) throws Exception { try (Connection c = DriverManager.getConnection("jdbc:h2:mem:1")) { Statement s = c.createStatement(); s.execute("CREATE TABLE NOTES(" // + "ID BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, " // + "VERSION INT)"); s.execute("CREATE TRIGGER T1 BEFORE INSERT ON NOTES FOR EACH ROW CALL \"" + T.class.getName() + '"'); s.executeUpdate("INSERT INTO NOTES() VALUES ()"); s.executeUpdate("INSERT INTO NOTES(VERSION) VALUES (5)"); c.setAutoCommit(false); s.executeUpdate("INSERT INTO NOTES() VALUES ()"); s.executeUpdate("INSERT INTO NOTES(VERSION) VALUES (10)"); c.commit(); try (ResultSet rs = s.executeQuery("TABLE NOTES")) { while (rs.next()) { System.out.printf("ID=%d, VERSION=%d%n", rs.getLong(1), rs.getInt(2)); } } } } } With the latest version of H2 (1.4.199) it prints ID=1, VERSION=1 ID=2, VERSION=1 ID=3, VERSION=1 ID=4, VERSION=1 So such trigger works as expected. Because you're using some implementation of JPA your problem seems to be related with it and not with H2. -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to h2-database+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/h2-database/9854ef44-b694-40ae-a6e2-4a3fe7c2701d%40googlegroups.com.