mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-27 05:36:01 +00:00
fix: add createSql to firebird triggers
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const sql = require('./sql');
|
const sql = require('./sql');
|
||||||
const { getDataTypeString, getTriggerTiming, getTriggerEventType, getFormattedDefaultValue } = require('./helpers');
|
const {
|
||||||
|
getDataTypeString,
|
||||||
|
getTriggerTiming,
|
||||||
|
getTriggerEventType,
|
||||||
|
getFormattedDefaultValue,
|
||||||
|
getTriggerCreateSql,
|
||||||
|
} = require('./helpers');
|
||||||
|
|
||||||
const { DatabaseAnalyser } = require('dbgate-tools');
|
const { DatabaseAnalyser } = require('dbgate-tools');
|
||||||
|
|
||||||
@@ -30,6 +36,7 @@ class Analyser extends DatabaseAnalyser {
|
|||||||
...i,
|
...i,
|
||||||
eventType: getTriggerEventType(i.TRIGGERTYPE),
|
eventType: getTriggerEventType(i.TRIGGERTYPE),
|
||||||
triggerTiming: getTriggerTiming(i.TRIGGERTYPE),
|
triggerTiming: getTriggerTiming(i.TRIGGERTYPE),
|
||||||
|
createSql: getTriggerCreateSql(i),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const primaryKeys = primaryKeysResult.rows ?? [];
|
const primaryKeys = primaryKeysResult.rows ?? [];
|
||||||
|
|||||||
@@ -71,6 +71,15 @@ function getTriggerEventType(triggerType) {
|
|||||||
return eventMap[triggerType]?.eventType || null;
|
return eventMap[triggerType]?.eventType || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTriggerCreateSql(triggerResult) {
|
||||||
|
const eventType = getTriggerEventType(triggerResult.TRIGGERTYPE);
|
||||||
|
const triggerTiming = getTriggerTiming(triggerResult.TRIGGERTYPE);
|
||||||
|
const body = triggerResult.TRIGGER_BODY_SQL;
|
||||||
|
|
||||||
|
const createSql = `CREATE OR ALTER TRIGGER "${triggerResult.pureName}" ${triggerTiming} ${eventType} ON "${triggerResult.tableName}" ${body};`;
|
||||||
|
return createSql;
|
||||||
|
}
|
||||||
|
|
||||||
function getTriggerTiming(triggerType) {
|
function getTriggerTiming(triggerType) {
|
||||||
return eventMap[triggerType]?.triggerTiming || null;
|
return eventMap[triggerType]?.triggerTiming || null;
|
||||||
}
|
}
|
||||||
@@ -86,4 +95,5 @@ module.exports = {
|
|||||||
getTriggerEventType,
|
getTriggerEventType,
|
||||||
getTriggerTiming,
|
getTriggerTiming,
|
||||||
getFormattedDefaultValue,
|
getFormattedDefaultValue,
|
||||||
|
getTriggerCreateSql,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ module.exports = `
|
|||||||
SELECT
|
SELECT
|
||||||
TRIM(rtr.RDB$TRIGGER_NAME) as "pureName",
|
TRIM(rtr.RDB$TRIGGER_NAME) as "pureName",
|
||||||
TRIM(rtr.RDB$RELATION_NAME) as "tableName",
|
TRIM(rtr.RDB$RELATION_NAME) as "tableName",
|
||||||
rtr.RDB$TRIGGER_TYPE as TRIGGERTYPE
|
rtr.RDB$TRIGGER_TYPE as TRIGGERTYPE,
|
||||||
|
CAST(rtr.RDB$TRIGGER_SOURCE AS VARCHAR(8191)) AS TRIGGER_BODY_SQL
|
||||||
FROM
|
FROM
|
||||||
RDB$TRIGGERS rtr
|
RDB$TRIGGERS rtr
|
||||||
JOIN RDB$RELATIONS rel ON rtr.RDB$RELATION_NAME = rel.RDB$RELATION_NAME
|
JOIN RDB$RELATIONS rel ON rtr.RDB$RELATION_NAME = rel.RDB$RELATION_NAME
|
||||||
|
|||||||
Reference in New Issue
Block a user