----------序列
--创建一个序列 seq_test 起始值为1000 最大值为1004 步长为1 不循环 缓存为20的序列
create sequence seq_test start with 1000 maxvalue 1004 increment by 1 nocycle cache 20;
---使用数据字典
select * from user_sequences;
--查看序列的值
select sql_test.nextval from dual;--查看序列下一个值
select sql_test.currval from dual;--序列当前值
--创建一个序列 seq_test 起始值为1000 最大值为1004 步长为1 循环 缓存为20的序列
create sequence sqe_test3 start with 1000 maxvalue 1004 increment by 1 cycle cache 20;
select sqe_test3.naxtval from dual;
--怎么生成一个c0001,c0002,c9999的ID
--1.触发器 trigger
/*
CREATE [OR REPLACE] TRIGGER [schema .] trigger
{ BEFORE | AFTER | INSTEAD OF }
{ dml_event_clause
| { ddl_event [OR ddl_event]...
| database_event [OR database_event]...
}
ON { [schema .] SCHEMA | DATABASE }
}
[WHEN ( condition ) ]
{ pl/sql_block | call_procedure_statement }
--
create or replace trigger style_insert
before insert on 表名
for each row
begin
select seq_style.nextval into :new.id from dual;
end;
*/
--2.函数 function
--创建一个表
drop table goods;
create table goods(
gid varchar2(20)
)
select * from goods;
--创建序列
select * from user_sequences;
drop sequence sqe_zy;
create sequence sqe_zy start with 1 increment by 1 nocycle cache 20;
--select sqe_zy.nextval from dual;
-- select 'C'||to_char(sqe_zy.nextval,'0000') from dual ;
--select 'C'||'0001' from dual;
--创建触发器
create or replace trigger good_insert
before insert on goods
for each row
begin
select 'C' || trim(to_char(sqe_zy.nextval, '0000'))
into :new.gid
from dual;
end;
insert into goods select to_char(sqe_zy.currval) from dual connect by level<=99;
drop trigger good_insert;
select * from goods;
--创建函数
create or replace function goodtext(str1 in varchar, str2 in varchar)
return varchar is
begin
return str1 || str2;
end;
--插入数据
insert into goods select goodtext('C',trim(to_char(sqe_zy.nextval,'0000'))) from dual connect by level<=99;
select * from goods;
--创建一个序列 seq_test 起始值为1000 最大值为1004 步长为1 不循环 缓存为20的序列
create sequence seq_test start with 1000 maxvalue 1004 increment by 1 nocycle cache 20;
---使用数据字典
select * from user_sequences;
--查看序列的值
select sql_test.nextval from dual;--查看序列下一个值
select sql_test.currval from dual;--序列当前值
--创建一个序列 seq_test 起始值为1000 最大值为1004 步长为1 循环 缓存为20的序列
create sequence sqe_test3 start with 1000 maxvalue 1004 increment by 1 cycle cache 20;
select sqe_test3.naxtval from dual;
--怎么生成一个c0001,c0002,c9999的ID
--1.触发器 trigger
/*
CREATE [OR REPLACE] TRIGGER [schema .] trigger
{ BEFORE | AFTER | INSTEAD OF }
{ dml_event_clause
| { ddl_event [OR ddl_event]...
| database_event [OR database_event]...
}
ON { [schema .] SCHEMA | DATABASE }
}
[WHEN ( condition ) ]
{ pl/sql_block | call_procedure_statement }
--
create or replace trigger style_insert
before insert on 表名
for each row
begin
select seq_style.nextval into :new.id from dual;
end;
*/
--2.函数 function
--创建一个表
drop table goods;
create table goods(
gid varchar2(20)
)
select * from goods;
--创建序列
select * from user_sequences;
drop sequence sqe_zy;
create sequence sqe_zy start with 1 increment by 1 nocycle cache 20;
--select sqe_zy.nextval from dual;
-- select 'C'||to_char(sqe_zy.nextval,'0000') from dual ;
--select 'C'||'0001' from dual;
--创建触发器
create or replace trigger good_insert
before insert on goods
for each row
begin
select 'C' || trim(to_char(sqe_zy.nextval, '0000'))
into :new.gid
from dual;
end;
insert into goods select to_char(sqe_zy.currval) from dual connect by level<=99;
drop trigger good_insert;
select * from goods;
--创建函数
create or replace function goodtext(str1 in varchar, str2 in varchar)
return varchar is
begin
return str1 || str2;
end;
--插入数据
insert into goods select goodtext('C',trim(to_char(sqe_zy.nextval,'0000'))) from dual connect by level<=99;
select * from goods;