将Oracle触发器转换为MySql触发器 [英] Converting Oracle trigger to MySql Trigger

查看:448
本文介绍了将Oracle触发器转换为MySql触发器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将下面的触发器从oracle语法转换为Mysql语法...

I need to convert below trigger from oracle syntax to Mysql syntax ...

在下面的示例中我出现错误

below example i am getting ERROR

错误代码:1327.未声明的变量:new

Error Code: 1327. Undeclared variable: new

DELIMITER $$

CREATE TRIGGER PRE_INS_LN_CLIENTS
BEFORE INSERT
ON LN_CLIENTS
FOR EACH ROW
BEGIN

  SELECT LN_CLIENTS_REC_ID_SEQ.NEXTVAL INTO new.REC_ID FROM DUAL
  new.SYNC_FLAG := 'I';

END $$

DELIMITER ;

推荐答案

MySQL不使用冒号,并且还有其他一些小的变化.我认为这会起作用:

MySQL doesn't use the colon, and there are a few other minor variations. I think this will work:

DELIMITER $$

CREATE OR REPLACE TRIGGER PRE_DEL_LN_CLIENTS
BEFORE DELETE ON LN_CLIENTS
FOR EACH ROW
BEGIN
  INSERT INTO LN_CLIENTS_DELETED (REC_ID, LOAN_NUMBER, CLIENT_SEQ_NUM, FIRST_NAME, FATHER_NAME, FAMILY_NAME, MOTHER_NAME, NATIONALITY, SEX, BIRTH_PLACE_CODE, BIRTH_PLACE_TEXT, BIRTH_DATE, REG_PLACE_CODE, REG_PLACE_TEXT, REG_NUM, ADDRESS_CODE, ADDRESS_TEXT, PHONE, EDUCATION_LEVEL_CODE, PROFESSION_CODE, PROFESSION_TEXT, MONTHLY_INCOME, WORK_PLACE, WORK_ADDRESS_TEXT, ID_DOC_TYPE, ID_DOC_NUM1, ID_DOC_NUM2, ID_DOC_DATE, NOTES, OFFICE, CREATED_BY, CREATED_ON, UPDATED_BY, UPDATED_ON, SYNC_FLAG)
      VALUES(OLD.REC_ID, OLD.LOAN_NUMBER, OLD.CLIENT_SEQ_NUM, OLD.FIRST_NAME, OLD.FATHER_NAME, OLD.FAMILY_NAME, OLD.MOTHER_NAME, OLD.NATIONALITY, OLD.SEX, OLD.BIRTH_PLACE_CODE, OLD.BIRTH_PLACE_TEXT, OLD.BIRTH_DATE, OLD.REG_PLACE_CODE, OLD.REG_PLACE_TEXT, OLD.REG_NUM, OLD.ADDRESS_CODE, OLD.ADDRESS_TEXT, OLD.PHONE, OLD.EDUCATION_LEVEL_CODE, OLD.PROFESSION_CODE, OLD.PROFESSION_TEXT, OLD.MONTHLY_INCOME, OLD.WORK_PLACE, OLD.WORK_ADDRESS_TEXT, OLD.ID_DOC_TYPE, OLD.ID_DOC_NUM1, OLD.ID_DOC_NUM2, OLD.ID_DOC_DATE, OLD.NOTES, OLD.OFFICE, OLD.CREATED_BY, OLD.CREATED_ON, OLD.UPDATED_BY, OLD.UPDATED_ON, 'I');
END$$

DELIMITER ;

这篇关于将Oracle触发器转换为MySql触发器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆