Oracle:语句 运行 相互转化
Oracle: Statements running into each other
我不熟悉 Oracle,正在测试旧版本所需的自动递增触发器,其中 IDENTITY
尚不可用。
CREATE TABLE stuff (
id int PRIMARY KEY,
data varchar(255)
);
CREATE SEQUENCE stuff_sequence;
CREATE TRIGGER test
BEFORE INSERT ON stuff
FOR EACH ROW
BEGIN
SELECT stuff_sequence.nextval INTO :new.id FROM dual;
END;
INSERT INTO stuff(data) VALUES('test');
使用 SQL Developer,我可以 运行 CREATE TABLE
语句,然后 CREATE SEQUENCE
语句,但是当我 运行 CREATE TRIGGER
语句,它也会突出显示 INSERT
语句,然后抱怨“遇到符号 "INSERT"。显然,如果我尝试 运行 全部作为一个脚本,我会得到同样的错误。
这里发生了什么,我该如何解决?
只需将/
放在触发代码的末尾即可。代表上面代码的结尾。
CREATE TRIGGER test
BEFORE INSERT ON stuff
FOR EACH ROW
BEGIN
SELECT stuff_sequence.nextval INTO :new.id FROM dual;
END;
/ -- this
INSERT INTO stuff(data) VALUES('test');
/
在输入 DML 或 DDL 期间或 PL/SQL 表示 "terminate the current statement, execute it and store it to the SQLPLUS buffer" 并且在多行代码中需要 /
以指示代码到此结束.
干杯!!
我不熟悉 Oracle,正在测试旧版本所需的自动递增触发器,其中 IDENTITY
尚不可用。
CREATE TABLE stuff (
id int PRIMARY KEY,
data varchar(255)
);
CREATE SEQUENCE stuff_sequence;
CREATE TRIGGER test
BEFORE INSERT ON stuff
FOR EACH ROW
BEGIN
SELECT stuff_sequence.nextval INTO :new.id FROM dual;
END;
INSERT INTO stuff(data) VALUES('test');
使用 SQL Developer,我可以 运行 CREATE TABLE
语句,然后 CREATE SEQUENCE
语句,但是当我 运行 CREATE TRIGGER
语句,它也会突出显示 INSERT
语句,然后抱怨“遇到符号 "INSERT"。显然,如果我尝试 运行 全部作为一个脚本,我会得到同样的错误。
这里发生了什么,我该如何解决?
只需将/
放在触发代码的末尾即可。代表上面代码的结尾。
CREATE TRIGGER test
BEFORE INSERT ON stuff
FOR EACH ROW
BEGIN
SELECT stuff_sequence.nextval INTO :new.id FROM dual;
END;
/ -- this
INSERT INTO stuff(data) VALUES('test');
/
在输入 DML 或 DDL 期间或 PL/SQL 表示 "terminate the current statement, execute it and store it to the SQLPLUS buffer" 并且在多行代码中需要 /
以指示代码到此结束.
干杯!!