diff --git a/integration-tests/__tests__/object-analyse.spec.js b/integration-tests/__tests__/object-analyse.spec.js index 55e23000e..5d871724a 100644 --- a/integration-tests/__tests__/object-analyse.spec.js +++ b/integration-tests/__tests__/object-analyse.spec.js @@ -161,7 +161,8 @@ describe('Object analyse', () => { // test trigger createSql if (triggerOtherCreateSql) await runCommandOnDriver(conn, driver, triggerOtherCreateSql); - await runCommandOnDriver(conn, driver, createdTrigger.createSql); + + await driver.script(conn, createdTrigger.createSql); const structure2 = await driver.analyseFull(conn); const createdTrigger2 = structure2[objectTypeField].find(x => x.pureName == expected.pureName); expect(createdTrigger2).toEqual(expect.objectContaining(expected)); diff --git a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js index 34b83a0ba..039039746 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js @@ -245,9 +245,8 @@ class Analyser extends DatabaseAnalyser { pureName: row.triggerName, eventType: row.eventType, triggerTiming: row.triggerTiming, - schemaName: row.schemaName, tableName: row.tableName, - createSql: row.definition, + createSql: `CREATE TRIGGER ${row.triggerName} ${row.triggerTiming} ${row.eventType} ON ${row.tableName} FOR EACH ROW ${row.definition}` , })), }; this.feedback({ analysingMessage: null }); diff --git a/plugins/dbgate-plugin-oracle/src/backend/Analyser.js b/plugins/dbgate-plugin-oracle/src/backend/Analyser.js index 8161d6c8a..7f4cdfed8 100644 --- a/plugins/dbgate-plugin-oracle/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-oracle/src/backend/Analyser.js @@ -213,13 +213,15 @@ class Analyser extends DatabaseAnalyser { parameters: routineToParams[func.pure_name], })), triggers: triggers.rows.map(row => ({ - pureName: row.TRIGGER_NAME, - trigerName: row.TRIGGER_NAME, - definition: row.DEFINITION, - tableName: row.TABLE_NAME, - triggerLevel: row.TRIGGER_LEVEL, - triggerTiming: row.TRIGGER_TIMING, - eventType: row.EVENT_TYPE, + pureName: row.trigger_name, + createSql: `SET SQLTERMINATOR "/"\nCREATE TRIGGER "${row.trigger_name}" ${ + row.trigger_timing.includes('BEFORE') ? 'BEFORE' : 'AFTER' + } ${row.event_type} ON "${row.table_name}" FOR EACH ROW ${row.definition} \n/\n`, + // createSql: `SET SQLTERMINATOR "/"\n${row.definition}\n/\n`, + tableName: row.table_name, + triggerLevel: row.trigger_level, + triggerTiming: row.trigger_timing, + eventType: row.event_type, })), }; diff --git a/plugins/dbgate-plugin-oracle/src/backend/sql/triggers.js b/plugins/dbgate-plugin-oracle/src/backend/sql/triggers.js index 78517df06..bb575c890 100644 --- a/plugins/dbgate-plugin-oracle/src/backend/sql/triggers.js +++ b/plugins/dbgate-plugin-oracle/src/backend/sql/triggers.js @@ -1,10 +1,10 @@ module.exports = ` SELECT - TRIGGER_TYPE AS trigger_timing, - TRIGGERING_EVENT AS event_type, - TRIGGER_BODY AS definition, - TRIGGER_NAME AS trigger_name, - TABLE_NAME AS table_name, + TRIGGER_TYPE AS "trigger_timing", + TRIGGERING_EVENT AS "event_type", + TRIGGER_BODY AS "definition", + TRIGGER_NAME AS "trigger_name", + TABLE_NAME AS "table_name", OWNER, CASE WHEN INSTR(TRIGGER_TYPE, 'ROW') > 0 THEN 'ROW'