/
InsertOrUpdateGeneratorH2.java
36 lines (29 loc) · 1.41 KB
/
InsertOrUpdateGeneratorH2.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package liquibase.sqlgenerator.core;
import liquibase.database.Database;
import liquibase.database.core.H2Database;
import liquibase.sqlgenerator.SqlGeneratorChain;
import liquibase.sqlgenerator.core.InsertOrUpdateGenerator;
import liquibase.statement.core.InsertOrUpdateStatement;
public class InsertOrUpdateGeneratorH2 extends InsertOrUpdateGenerator {
@Override
public boolean supports(InsertOrUpdateStatement statement, Database database) {
return database instanceof H2Database;
}
@Override
protected String getInsertStatement(InsertOrUpdateStatement insertOrUpdateStatement, Database database, SqlGeneratorChain sqlGeneratorChain) {
String insertStatement = super.getInsertStatement(insertOrUpdateStatement, database, sqlGeneratorChain);
return insertStatement.replaceAll("(?i)insert into (.+) (values .+)", "MERGE INTO $1 KEY(" + insertOrUpdateStatement.getPrimaryKey() + ") $2");
}
@Override
protected String getUpdateStatement(InsertOrUpdateStatement insertOrUpdateStatement, Database database, String whereClause, SqlGeneratorChain sqlGeneratorChain) {
return "";
}
@Override
protected String getRecordCheck(InsertOrUpdateStatement insertOrUpdateStatement, Database database, String whereClause) {
return "";
}
@Override
protected String getElse(Database database) {
return "";
}
}