序列:
create sequence seq_test minvalue 1 maxvalue 1000 increment by 1 start with 1 nocache ;表:
create table test
(test_id number(10),
 test_value varchar2(20)
)触发器:
create or replace trigger test_trigger
before insert on test
for each row
begin
select seq_test.nextVal into :NEW.test_id from dual;
end;这里,小弟有2个问题:
1、在pl/sql的sql windows 中,输入
insert into test values('');
insert into test values('michael');是否可以实现隐式的插入两条记录: 1 
                             2 michael 2、触发器中“select seq_test.nextVal into :NEW.test_id from dual; ”语句的 “into :NEW.Test_id ”。
是否,该语句是将当前seq_test的nextVal值赋给了insert into语句中的test.test_id ?
请高手们不甚赐教,小弟感激不尽。

解决方案 »

  1.   

    insert into test values(''); 

    insert into test(test_value ) values(''); 
      

  2.   

    触发器里面直接赋值就可以,不要用select .. from dual;
    会影响性能。
    SQL> create or replace trigger test_trigger
      2  before insert on test
      3  for each row
      4  begin
      5  :NEW.test_id :=seq_test.nextVal ;
      6  end;
      7  /触发器已创建SQL> insert into test (test_value)  values('');已创建 1 行。SQL> select * from test;   TEST_ID TEST_VALUE
    ---------- --------------------
             1 SQL>