我可以在TRIGGER中创建一个MYSQL TRIGGER WITH或condition

时间:2017-07-13 12:55:32

标签: mysql oracle11g triggers database-schema

我可以使用OR条件创建 MYSQL TRIGGER

创建或替换TRIGGER TIGGER NAME 在插入之前更新删除

喜欢这个(下面是ORACLE TRIGGER):

CREATE OR REPLACE TRIGGER TRIGERNAME_XYZ
BEFORE INSERT OR UPDATE OR DELETE
ON TABLE_NAME_ABC
REFERENCING OLD as OLD NEW as NEW
FOR EACH ROW
DECLARE
mAppUserCode     VARCHAR2(50);
mOSUser          VARCHAR2(100);
mAppUserName     VARCHAR2(100);
mModuleName      VARCHAR2(100);
mChangeID        NUMBER;
BEGIN
SELECT APP_USERCODE, OS_USER, APP_USERNAME, MODULE_NAME INTO mAppUserCode, mOSUser, mAppUserName, mModuleName FROM DB_SESSION_VIEW;
SELECT CHANGE_ID_SEQ.NEXTVAL INTO mChangeID FROM DUAL;
IF INSERTING THEN
   :NEW.CREATED_BY_MODULE     := mModuleName;
   :NEW.CREATED_BY_USER_CODE  := mAppUserCode;
   :NEW.CREATED_BY_OS_USER    := mOSUser;
   :NEW.CREATED_BY_USER_NAME  := mAppUserName;
   :NEW.CREATED_ON            := sysdate;
   :NEW.CHG_ID                := mChangeID ;
ELSIF UPDATING THEN
   :NEW.CHANGED_BY_MODULE     := mModuleName;
   :NEW.CHANGED_BY_USER_CODE  := mAppUserCode;
   :NEW.CHANGED_BY_OS_USER    := mOSUser;
   :NEW.CHANGED_BY_USER_NAME  := mAppUserName;
   :NEW.CHANGED_ON            := sysdate;
   :NEW.CHG_ID                := mChangeID ;
END IF;
END;
/

MYSQL 中是否可以使用OR条件创建TRIGGER?

同样来自phpmyadmin的事件部分中没有选项可以添加或条件,即选择 INSERT,UPDATE AND DELETE 没有规定将置于插入或更新或删除之前 所以我的问题是,它可能像上面的Oracle触发器一样吗? enter image description here

1 个答案:

答案 0 :(得分:0)

我认为MySQL不会为单个触发器提供多个事件。你能做什么您只需创建一个procedure,并在该过程中按原样编写完整的逻辑。

将NEW和OLD值作为参数放入该过程。

从所有三个触发器调用该过程。