我对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。显然,如果我尝试将整个脚本作为一个脚本运行,我会得到相同的错误。
这里发生了什么,我该如何解决?
1条答案
按热度按时间pepwfjgg1#
只需将
/
放在触发器代码的末尾。它表示它上面的代码的结尾。/
在输入DML或DDL或PL/SQL时意味着“终止当前语句,执行它并将其存储到SQLPLUS缓冲区”,并且在多行代码中需要/
以指示代码到此结束。