mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 12:35:59 +00:00
feat: add mssql triggers to analyser
This commit is contained in:
@@ -214,12 +214,26 @@ class MsSqlAnalyser extends DatabaseAnalyser {
|
||||
parameters: functionToParameters[row.objectId],
|
||||
}));
|
||||
|
||||
const triggerRows = await this.analyserQuery('triggers');
|
||||
|
||||
const triggers = triggerRows.rows.map(row => ({
|
||||
objectId: `triggers:${row.objectId}`,
|
||||
contentHash: row.modifyDate && row.modifyDate.toISOString(),
|
||||
createSql: row.definition,
|
||||
triggerTiming: row.triggerTiming,
|
||||
eventType: row.eventType,
|
||||
schemaName: row.schemaName,
|
||||
tableName: row.tableName,
|
||||
triggerName: row.triggerName,
|
||||
}));
|
||||
|
||||
this.feedback({ analysingMessage: null });
|
||||
return {
|
||||
tables,
|
||||
views,
|
||||
procedures,
|
||||
functions,
|
||||
triggers,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ const functionParameters = require('./functionParameters');
|
||||
const viewColumns = require('./viewColumns');
|
||||
const indexes = require('./indexes');
|
||||
const indexcols = require('./indexcols');
|
||||
const triggers = require('./triggers');
|
||||
|
||||
module.exports = {
|
||||
columns,
|
||||
@@ -28,4 +29,5 @@ module.exports = {
|
||||
indexes,
|
||||
indexcols,
|
||||
tableSizes,
|
||||
triggers,
|
||||
};
|
||||
|
||||
28
plugins/dbgate-plugin-mssql/src/backend/sql/triggers.js
Normal file
28
plugins/dbgate-plugin-mssql/src/backend/sql/triggers.js
Normal file
@@ -0,0 +1,28 @@
|
||||
module.exports = `
|
||||
SELECT
|
||||
o.modify_date as modifyDate,
|
||||
o.object_id as objectId,
|
||||
o.name AS triggerName,
|
||||
s.name AS schemaName,
|
||||
OBJECT_NAME(o.parent_object_id) AS tableName,
|
||||
CASE
|
||||
WHEN OBJECTPROPERTY(o.object_id, 'ExecIsAfterTrigger') = 1 THEN 'AFTER'
|
||||
WHEN OBJECTPROPERTY(o.object_id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF'
|
||||
ELSE 'BEFORE'
|
||||
END AS triggerTiming,
|
||||
CASE
|
||||
WHEN OBJECTPROPERTY(o.object_id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT'
|
||||
WHEN OBJECTPROPERTY(o.object_id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE'
|
||||
WHEN OBJECTPROPERTY(o.object_id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE'
|
||||
END AS triggerEvent,
|
||||
OBJECT_DEFINITION(o.object_id) AS definition
|
||||
FROM sys.objects o
|
||||
INNER JOIN sys.tables t
|
||||
ON o.parent_object_id = t.object_id
|
||||
INNER JOIN sys.schemas s
|
||||
ON t.schema_id = s.schema_id
|
||||
WHERE o.type = 'TR'
|
||||
AND o.is_ms_shipped = 0
|
||||
AND o.object_id =OBJECT_ID_CONDITION
|
||||
AND s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
Reference in New Issue
Block a user