过程如下,想在oracle10g中实验一下自动增长序列,触发器实现。表 test,
两个列: id, name
序列 innerid
自动增长不用触发器,向表中插入数据
insert into test values (innerid.nextval,'aa')
成功现在用触发器,表中插入行时,触发器自动将innerid.nextval写入id中
create trigger test_id
before insert on test
for each row
BEGIN
SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL
END
这条语句每次运行都会弹出一个网页,里面就一项~~ :new[_______] ,让我输入一个值,实验了各种能想到的值,均提示 ORA-00900: 无效 SQL 语句比较无奈。
请各位大大看看是什么问题。
两个列: id, name
序列 innerid
自动增长不用触发器,向表中插入数据
insert into test values (innerid.nextval,'aa')
成功现在用触发器,表中插入行时,触发器自动将innerid.nextval写入id中
create trigger test_id
before insert on test
for each row
BEGIN
SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL
END
这条语句每次运行都会弹出一个网页,里面就一项~~ :new[_______] ,让我输入一个值,实验了各种能想到的值,均提示 ORA-00900: 无效 SQL 语句比较无奈。
请各位大大看看是什么问题。
before insert on test
for each row
BEGIN
SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL;--少个分号
END;
Table dropped
SQL>
SQL> CREATE TABLE test
2 (ID NUMBER(20),
3 NAME VARCHAR2(20)
4 ) ;
Table created
SQL>
SQL> create or replace trigger test_id
2 before insert on test
3 for each row
4 BEGIN
5 SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL;
6 END;
7 /
Trigger created
SQL> INSERT INTO test(NAME) VALUES('aa');
1 row inserted
SQL> SELECT * FROM test;
ID NAME
--------------------- --------------------
3 aa
SQL>
create or replace trigger TB_Trig
before insert
on TB
for each rowbegin select SEQ_TB.nextval into :new.Id from dual;end;
SQL> create table test(id number,name varchar2(20));表已创建。SQL> create sequence innerid
2 start with 1
3 increment by 1
4 /序列已创建。SQL> edi
已写入 file afiedt.buf 1 create or replace trigger test_id before insert on test
2 for each row
3 BEGIN
4 SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL;
5* END;
SQL> /触发器已创建SQL> insert into test(name) values('fogeater');已创建 1 行。SQL> select * from test; ID NAME
---------- --------------------
1 fogeater