conn / as sysdba
//建表
create table userinfo (
userid number(8) primary key,
username varchar2(16) not null,
pwd varchar2(20)
);
//创建序列
create sequence userinfo_seq minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 cache 20;
//创建触发器
CREATE OR REPLACE TRIGGER "userinfo_trig"
BEFORE INSERT ON userinfo
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT userinfo_seq.NEXTVAL INTO :NEW.userid FROM DUAL;
END userinfo_trig; 在创建触发器时, 分号不起作用。这是为什么?
//建表
create table userinfo (
userid number(8) primary key,
username varchar2(16) not null,
pwd varchar2(20)
);
//创建序列
create sequence userinfo_seq minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 cache 20;
//创建触发器
CREATE OR REPLACE TRIGGER "userinfo_trig"
BEFORE INSERT ON userinfo
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT userinfo_seq.NEXTVAL INTO :NEW.userid FROM DUAL;
END userinfo_trig; 在创建触发器时, 分号不起作用。这是为什么?
你先执行建表SQL,再执行建立序列SQL,最后执行建触发器的SQL有没有问题?
什么意思,你是问触发器的代码问题还是序列使用的问题给你个例子吧,反正我平时都是用这个来用序列的首先:在oracle里创建序列
create sequence R_STAFF_ROLE_SEQ //序列名
minvalue 1 //最小值
maxvalue 99999999999 //最大值,一般这个足够用
start with 1 //开始值
increment by 1 //增量
cache 20 //缓存大小
order; 建表
CREATE TABLE test (
id number(11) primary key,
val varchar2(16)
);
其次:在oracle里编写触发器
CREATE OR REPLACE TRIGGER TRI_R_STAFF_ROLE
BEFORE INSERT ON R_STAFF_ROLE
FOR EACH ROW
BEGIN
SELECT R_STAFF_ROLE_SEQ.NEXTVAL
INTO :NEW.ID
FROM DUAL;
END ; 插入值
insert into admin(val) VALUES ('test1');
commit;
//创建触发器
CREATE OR REPLACE TRIGGER "userinfo_trig"
BEFORE INSERT ON userinfo
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT userinfo_seq.NEXTVAL INTO :NEW.userid FROM DUAL;
END userinfo_trig;--ps:你这个问题不在于分号吧,是你的创建有问题阿,看楼上的例子
创建表和序列的时候都有创建成功的提示,创建触发器SQL> CREATE OR REPLACE sql>TRIGGER "userinfo_trig"
2 BEFORE INSERT ON userinfo
3 REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
4 DECLARE
5 BEGIN
6 SELECT userinfo_seq.NEXTVAL INTO :NEW.userid FROM DUAL;
7 END userinfo_trig;
8 ;
9
10
11
可以无限回车
还是不行啊!
到创建触发器的时候 还是可以无限回车
能不能说具体点啊, 我才开始学编程, sql window 和 command window 还真没接触过 网上查了下 不过也找不到具体的例子!
谢谢啦 !!!
in sqlplus, input / at the end.
like :
CREATE OR REPLACE TRIGGER "userinfo_trig"
BEFORE INSERT ON userinfo
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT userinfo_seq.NEXTVAL INTO :NEW.userid FROM DUAL;
END userinfo_trig;
/if you have a tool such as pl/sql developer, you can open a sql window instead of a command window.
also you can input a '/' in command window to execute your trigger creation statement...
如果在sql窗口中,直接分号就可以了!
看了你后面的描述才知道你真正的问题阿~~