trigger.js
5.01 KB
'use strict';
exports.__esModule = true;
var _utils = require('../utils');
var utils = _interopRequireWildcard(_utils);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var trigger = {
renameColumnTrigger: function renameColumnTrigger(tableName, columnName, to) {
var triggerName = utils.generateCombinedName('autoinc_trg', tableName);
var sequenceName = utils.generateCombinedName('seq', tableName);
return 'DECLARE ' + 'PK_NAME VARCHAR(200); ' + 'IS_AUTOINC NUMBER := 0; ' + 'BEGIN' + (' EXECUTE IMMEDIATE (\'ALTER TABLE "' + tableName + '" RENAME COLUMN "' + columnName + '" TO "' + to + '"\');') + (' SELECT COUNT(*) INTO IS_AUTOINC from "USER_TRIGGERS" where trigger_name = \'' + triggerName + '\';') + ' IF (IS_AUTOINC > 0) THEN' + ' SELECT cols.column_name INTO PK_NAME' + ' FROM all_constraints cons, all_cons_columns cols' + ' WHERE cons.constraint_type = \'P\'' + ' AND cons.constraint_name = cols.constraint_name' + ' AND cons.owner = cols.owner' + (' AND cols.table_name = \'' + tableName + '\';') + (' IF (\'' + to + '\' = PK_NAME) THEN') + (' EXECUTE IMMEDIATE (\'DROP TRIGGER "' + triggerName + '"\');') + (' EXECUTE IMMEDIATE (\'create or replace trigger "' + triggerName + '"') + (' BEFORE INSERT on "' + tableName + '" for each row') + ' declare' + ' checking number := 1;' + ' begin' + (' if (:new."' + to + '" is null) then') + ' while checking >= 1 loop' + (' select "' + sequenceName + '".nextval into :new."' + to + '" from dual;') + (' select count("' + to + '") into checking from "' + tableName + '"') + (' where "' + to + '" = :new."' + to + '";') + ' end loop;' + ' end if;' + ' end;\');' + ' end if;' + ' end if;' + 'END;';
},
createAutoIncrementTrigger: function createAutoIncrementTrigger(tableName) {
var triggerName = utils.generateCombinedName('autoinc_trg', tableName);
var sequenceName = utils.generateCombinedName('seq', tableName);
return 'DECLARE ' + 'PK_NAME VARCHAR(200); ' + 'BEGIN' + (' EXECUTE IMMEDIATE (\'CREATE SEQUENCE "' + sequenceName + '"\');') + ' SELECT cols.column_name INTO PK_NAME' + ' FROM all_constraints cons, all_cons_columns cols' + ' WHERE cons.constraint_type = \'P\'' + ' AND cons.constraint_name = cols.constraint_name' + ' AND cons.owner = cols.owner' + (' AND cols.table_name = \'' + tableName + '\';') + (' execute immediate (\'create or replace trigger "' + triggerName + '"') + (' BEFORE INSERT on "' + tableName + '"') + ' for each row' + ' declare' + ' checking number := 1;' + ' begin' + ' if (:new."\' || PK_NAME || \'" is null) then' + ' while checking >= 1 loop' + (' select "' + sequenceName + '".nextval into :new."\' || PK_NAME || \'" from dual;') + (' select count("\' || PK_NAME || \'") into checking from "' + tableName + '"') + ' where "\' || PK_NAME || \'" = :new."\' || PK_NAME || \'";' + ' end loop;' + ' end if;' + ' end;\'); ' + 'END;';
},
renameTableAndAutoIncrementTrigger: function renameTableAndAutoIncrementTrigger(tableName, to) {
var triggerName = utils.generateCombinedName('autoinc_trg', tableName);
var sequenceName = utils.generateCombinedName('seq', tableName);
var toTriggerName = utils.generateCombinedName('autoinc_trg', to);
var toSequenceName = utils.generateCombinedName('seq', to);
return 'DECLARE ' + 'PK_NAME VARCHAR(200); ' + 'IS_AUTOINC NUMBER := 0; ' + 'BEGIN' + (' EXECUTE IMMEDIATE (\'RENAME "' + tableName + '" TO "' + to + '"\');') + (' SELECT COUNT(*) INTO IS_AUTOINC from "USER_TRIGGERS" where trigger_name = \'' + triggerName + '\';') + ' IF (IS_AUTOINC > 0) THEN' + (' EXECUTE IMMEDIATE (\'DROP TRIGGER "' + triggerName + '"\');') + (' EXECUTE IMMEDIATE (\'RENAME "' + sequenceName + '" TO "' + toSequenceName + '"\');') + ' SELECT cols.column_name INTO PK_NAME' + ' FROM all_constraints cons, all_cons_columns cols' + ' WHERE cons.constraint_type = \'P\'' + ' AND cons.constraint_name = cols.constraint_name' + ' AND cons.owner = cols.owner' + (' AND cols.table_name = \'' + to + '\';') + (' EXECUTE IMMEDIATE (\'create or replace trigger "' + toTriggerName + '"') + (' BEFORE INSERT on "' + to + '" for each row') + ' declare' + ' checking number := 1;' + ' begin' + ' if (:new."\' || PK_NAME || \'" is null) then' + ' while checking >= 1 loop' + (' select "' + toSequenceName + '".nextval into :new."\' || PK_NAME || \'" from dual;') + (' select count("\' || PK_NAME || \'") into checking from "' + to + '"') + ' where "\' || PK_NAME || \'" = :new."\' || PK_NAME || \'";' + ' end loop;' + ' end if;' + ' end;\');' + ' end if;' + 'END;';
}
};
exports.default = trigger;
module.exports = exports['default'];