我在 mysql db 中有几百个触发器,我正在迁移到 Oracle db。有一个声明,我看到了很多我无法在 oracle 中找到等效的声明。
INSERT INTO $some_kind_of_message._BD_TRIGG$ (dummy) VALUES (value);
我在程序和函数中也看到了这一点,它似乎向调用程序的应用程序“返回”了一条消息(我认为)。我在两个 RDBMS 中都是新手,但我已经使用 oracle 几个月了。
是否有等效的语句来替换 oracle 中的 mysql 语句?非常感谢。
编辑:
这是许多触发器的示例。这个用于登录验证。我不太确定 oracle 的触发器语法,但现在这不是问题。'case' 部分仍然是 mysql 语法。我无法在 mysql 或 oracle 文档中找到信息。这不是一个正常的插入,它是 mysql 使用的某种返回消息(这就是我的猜测),我在函数和过程中也看到了它。¿我如何替换它以供 oracle 执行相同的任务?
CREATE OR REPLACE TRIGGER adduser
BEFORE INSERT
ON tbl_users
FOR EACH ROW
DECLARE flag INTEGER;
begin
flag := 1;
/* validate login */
IF(LENGTH(TRIM(:NEW.login)) < 4) THEN
flag := -1;
END IF;
/* valido clave */
IF(flag = 1) THEN
IF(LENGTH(:NEW.clave) < 3) THEN
flag := -2;
END IF;
END IF;
CASE flag
WHEN -1 THEN INSERT INTO $login_less_then_4_characters._BD_TRIGG$ (dummy) VALUES ('error');
WHEN -2 THEN INSERT INTO $pass_less_then_5_characters._BD_TRIGG$ (dummy) VALUES ('error');
ELSE flag := 0;
END CASE;
END;