jer*_*e78 2 sql oracle oracle11g
我正在尝试在Oracle 11g上执行以下SQL语句.谈到Oracle时我没有经验,我不确定为什么会失败.此查询由我们的开发人员提供给我.
我试图通过OEM中的SQL工作表来执行此操作.
CREATE OR REPLACE TRIGGER TBL_ADMINCOMMAND_TRG BEFORE
INSERT OR UPDATE ON tbl_AdminCommands FOR EACH ROW
BEGIN
IF inserting
AND :new.ADMINCOMMANDID IS NULL THEN
SELECT TBL_ADMINCOMMANDS_SEQ.nextval INTO :new.ADMINCOMMANDID FROM DUAL;
END IF;
END;
ALTER TRIGGER TBL_ADMINCOMMAND_TRG ENABLE;
Run Code Online (Sandbox Code Playgroud)
您显示的代码适用于我,但仅作为两个单独的命令:
1)
CREATE OR REPLACE TRIGGER TBL_ADMINCOMMAND_TRG BEFORE
INSERT OR UPDATE ON tbl_AdminCommands FOR EACH ROW
BEGIN
IF inserting
AND :new.ADMINCOMMANDID IS NULL THEN
SELECT TBL_ADMINCOMMANDS_SEQ.nextval INTO :new.ADMINCOMMANDID FROM DUAL;
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
2)
ALTER TRIGGER TBL_ADMINCOMMAND_TRG ENABLE;
Run Code Online (Sandbox Code Playgroud)
尝试一次一个.
顺便说一句,这一行:
SELECT TBL_ADMINCOMMANDS_SEQ.nextval INTO :new.ADMINCOMMANDID FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
可以在11G中简化为:
:new.ADMINCOMMANDID := TBL_ADMINCOMMANDS_SEQ.nextval;
Run Code Online (Sandbox Code Playgroud)
实际上,整个触发器可以简化为:
CREATE OR REPLACE TRIGGER TBL_ADMINCOMMAND_TRG
BEFORE INSERT ON tbl_AdminCommands
FOR EACH ROW
WHEN (NEW.ADMINCOMMANDID IS NULL)
BEGIN
:new.ADMINCOMMANDID := TBL_ADMINCOMMANDS_SEQ.nextval;
END;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3120 次 |
最近记录: |