package org.jumpmind.symmetric.db.db2;
import org.jumpmind.symmetric.db.ISymmetricDialect;
public class Db2As400TriggerTemplate extends Db2TriggerTemplate {
public Db2As400TriggerTemplate(ISymmetricDialect symmetricDialect) {
super(symmetricDialect);
clobColumnTemplate = "case when $(tableAlias).\"$(columnName)\" is null then '' else '\"' || replace(replace(cast($(tableAlias).\"$(columnName)\" as CLOB),'\\','\\\\'),'\"','\\\"') || '\"' end" ;
sqlTemplates.put("insertTriggerTemplate" ,
"CREATE TRIGGER $(schemaName)$(triggerName) " +
" AFTER INSERT ON $(schemaName)$(tableName) " +
" REFERENCING NEW AS NEW " +
" FOR EACH ROW MODE DB2SQL " +
" BEGIN ATOMIC " +
" IF $(syncOnInsertCondition) and $(syncOnIncomingBatchCondition) then " +
" INSERT into $(defaultSchema)$(prefixName)_data " +
" (table_name, event_type, trigger_hist_id, row_data, channel_id, transaction_id, source_node_id, external_data, create_time) " +
" VALUES('$(targetTableName)', 'I', $(triggerHistoryId), " +
" $(columns), " +
" $(channelExpression), $(txIdExpression), $(sourceNodeExpression), " +
" $(externalSelect), " +
" CURRENT_TIMESTAMP); " +
" END IF; " +
" $(custom_on_insert_text) " +
" END " );
sqlTemplates.put("updateTriggerTemplate" ,
"CREATE TRIGGER $(schemaName)$(triggerName) \n"+
" AFTER UPDATE ON $(schemaName)$(tableName) \n"+
" REFERENCING OLD AS OLD NEW AS NEW \n"+
" FOR EACH ROW MODE DB2SQL \n"+
" BEGIN ATOMIC \n"+
" IF $(syncOnUpdateCondition) and $(syncOnIncomingBatchCondition) then \n"+
" INSERT into $(defaultSchema)$(prefixName)_data \n"+
" (table_name, event_type, trigger_hist_id, pk_data, row_data, old_data, channel_id, transaction_id, source_node_id, external_data, create_time) \n"+
" VALUES('$(targetTableName)', 'U', $(triggerHistoryId), \n"+
" $(oldKeys), \n"+
" $(columns), \n"+
" $(oldColumns), \n"+
" $(channelExpression), \n"+
" $(txIdExpression), \n"+
" $(sourceNodeExpression), \n"+
" $(externalSelect), \n"+
" CURRENT_TIMESTAMP); \n"+
" END IF; \n"+
" $(custom_on_update_text) \n"+
" END " );
sqlTemplates.put("deleteTriggerTemplate" ,
"CREATE TRIGGER $(schemaName)$(triggerName) " +
" AFTER DELETE ON $(schemaName)$(tableName) " +
" REFERENCING OLD AS OLD " +
" FOR EACH ROW MODE DB2SQL " +
" BEGIN ATOMIC " +
" IF $(syncOnDeleteCondition) and $(syncOnIncomingBatchCondition) then " +
" INSERT into $(defaultSchema)$(prefixName)_data " +
" (table_name, event_type, trigger_hist_id, pk_data, old_data, channel_id, transaction_id, source_node_id, external_data, create_time) " +
" VALUES ('$(targetTableName)', 'D', $(triggerHistoryId), " +
" $(oldKeys), " +
" $(oldColumns), " +
" $(channelExpression), " +
" $(txIdExpression), " +
" $(sourceNodeExpression), " +
" $(externalSelect), " +
" CURRENT_TIMESTAMP); " +
" END IF; " +
" $(custom_on_delete_text) " +
" END " );
}
public boolean useTriggerTemplateForColumnTemplatesDuringInitialLoad() {
return false;
}
}