第一步:创建SEQUENCE
create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;
第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
create or replace trigger bef_ins_t_country_define
before insert on t_country_define
referencing old as old new as new for each row
begin
select s_country_id.nextval into :new.country_id from dual;
end;
/
create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;
第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
create or replace trigger bef_ins_t_country_define
before insert on t_country_define
referencing old as old new as new for each row
begin
select s_country_id.nextval into :new.country_id from dual;
end;
/
解决方案 »
- oracle sqlplus登陆界面点击确定后消失
- 游标PLSQL/SQL引撑切换在什么情况下发生?
- 为什么ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';在控制台有效,用JDBC桥就无效了呢?
- 数据库设计的初级问题
- 求解:Pre_Block触发器一般在什么时候被执行
- [求助]一个既简单又不简单的问题
- OCI error code ,ORA-01460 :未实现或无理的转换请求
- oracle有什么好的入门书
- 在ORACLE中建快照时storage(initial 512 next 512 pctincrease 10) refresh fast sysdate + 1时总是报错
- oracle安装出现好多解决不了的问题!求大神门帮助啊!
- 假如某一列容量(clob或blob)大于4GB时,咋办??再建一列,还是....??
- 我是新手,那位能告诉我关于日期的问题
1.创建sequence就可以
create sequence seq_name
minvalue 1
maxvalue 999999999999999999
start with 1
increment by 1
cache 20;
可以直接在插入时调用seq_name.nextval;
如insert into table_name(proid) values(seq_name.nextval);2.也可以创建触发器(同时要创建sequence):
create or replace trigger trg_name
before insert on table_name
for each row
begin
select seq_name.nextval into :new.proid from dual;
end;
/