由于ORACLE设置主键是不会自动增加的,所以必须用 序列 和 触发器 来完成主键的递增 1、建立数据表 create table Test_Increase( userid number(10) primary key, /*建立主键*/ username varchar2(20) ); 2、创建自动增长序列 CREATE SEQUENCE TestIncrease_Sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE ...
SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。
START WITH 定义Oracle序列的初始值(即产生的第一个值),默认为1。
MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够...
--建表
create table Test(
id number(4) not null primary key,
name varchar2(25)
)
--序列
create sequence Test_sequence
increment by 1--每次增加几个
start with 1 --从1开始计数
minvalue 1
nomaxvalue --不设置最大值
nocycle --一直累加,不循环
nocache --不建缓冲区
--触发器
create trigger Test_tiger before
insert on Test for each row when(new.id is null)
begin
select Test_sequence.nextv...
本篇文章主要介绍在oracle中如果创建自增长表,这里要用到序列。
create table tb_student
(id NUMBER(10) not null,createtime DATE not null,constraint PK_tb_student primary key (id)
);comment on table "tb_student" is
‘学生表‘;comment on column "tb_student"."id" is
‘主键id‘;comment on column "tb_student"."createtime" is
‘创建时间‘;--创建序列
crea...
为主键
例如,创建的表名为:uf_receive_pay
2.设置ID的主键自增,通过Sequence实现
创建Sequence
CREATE SEQUENCE uf_receive_pay_Seq INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10;
3.创建触发器
CREATE TRIGGER uf_receive_pay BEFORE insert ON uf_receive_pay FOR EACH ROW...
2.建立序列
-- Create sequence create sequence SEQ_SHIP_IMAGEminvalue 20maxvalue 999999999999999999start with 40increment by 1cache 20;
使用序列:
SELECT SEQ_SHIP_IMAGE.Nextval from dual;insert into ship_image (id,img_path,remark,ship_id) values (SEQ_SHIP_IMAGE.Nextval,‘ship3.jpg‘,‘8‘,‘8‘);
或者
<!-- 对应userDao中的insertUser方法, --><insert id="insertUser" parameterType="com.dy.entity.User...
TABLE ysb_log(id number(8) primary key not null ,tbdate varchar(50) NULL,tb_time varchar(50) NOT NULL,tblog varchar(500) NOT NULL,tbreor varchar2(20) null,bs varchar(50) NOT NULL);在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方
2. 创建自增create sequence S_ysb_log
minvalue 1
maxvalue 99999999 --最大的纸
start with 1
increment by 1
NOCYCLE -- 一直累...
oracle中自增序列sequence+触发器trigger:实现数据表TABDATA_LIVE_CYCLE中的主键id的自增。
CREATE SEQUENCE TABDATA_LIVE_CYCLE_SEQMINVALUE 0 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;CREATE OR REPLACE TRIGGER TABDATA_LIVE_CYCLE_SEQ_ID_ART before insert on TABDATA_LIVE_CYCLEfor each row begin select TABDATA_LIVE_CYCLE_SEQ.nextval into :new.id from dual; ...
10) PRIMARY KEY, TEAMNUM varchar(50) not null, MARKNUM varchar(50)
);
第二步:设置ID自增
第一种方式:不使用触发器1 CREATE SEQUENCE SEQ_TID;
2 INSERT INTO ContestDB VALUES(SEQ_TID.NEXTVAL,‘B20007009‘,‘B001 ‘);
3 INSERT INTO ContestDB VALUES(SEQ_TID.NEXTVAL,‘B20007010‘,‘B003 ‘);
第二种方式:使用Trigger 触发器
1 --自定义一个序列 2 create sequence ContestDB_sequence 3 ...
4) NOT NULL PRIMARY KEY,NAME VARCHAR(25));然后,自定义一个序列(sequence):CREATE SEQUENCE example_sequenceINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXVALUE -- 不设置最大值NOCYCLE -- 一直累加,不循环NOCACHE -- 不建缓冲区再创建一个触发器:CREATE TRIGGER example_triger BEFOREINSERT ON example FOR EACH ROW WHEN (new.id is null)--只有在id为空时,启动该触发器生成id号beginselect example_s...
--查询下一个值 创建后调用查询到为1select seq_user.nextval from dual; --查询下一个值 再次调用查询到为2select seq_user.currval from dual; --查询当前值 刚创建不能查询当前值,会报错--日常应用
--在插入数据时,调用响应表的sequence,调用nextval,实现主键自增
insert into user (id,name,age) values(seq_user.nextval,‘张三‘,20);
二.Oracle数据库分页查询----通过rownum
使用伪列rownum来实现--举例:emp表按照工资从...
1 CREATE TABLE demo6
2 (
3 id INT NOT NULL,
4 key1 VARCHAR2(40) NULL,
5 key2 VARCHAR2(40) NULL
6 );
2、设置主键1 alter table demo6 add constraint demo6_pk primary key (id);
3、新建序列1 create sequence demo6_id
2 minvalue 1
3 nomaxvalue
4 increment by 1
5 start with 1
6 nocache;
4、新建触发器1 create or replace trigger demo6_tg_insertId
2 before insert on demo6 for each row
3 begin
...
创建数据库CREATE TABLE STUDENT(ID NUMBER PRIMARY KEY,
NAME VARCHAR(200) NOT NULL,
SEX VARCHAR(200),
CREATE_DATE DATE);
指定表名注释COMMENT ON TABLE STUDENT IS ‘学生表‘;
指定列注释COMMENT ON COLUMN STUDENT.ID IS ‘学生ID‘;
COMMENT ON COLUMN STUDENT.NAME IS ‘学生姓名‘;
COMMENT ON COLUMN STUDENT.SEX IS ‘学生性别‘;
COMMENT ON COLUMN STUDENT.CREATE_DATE IS ‘创建日期‘;
创建序列CREATE SEQUENCE s...
第二部创建触发器CREATE OR REPLACE TRIGGER TRIGGER_NEW
BEFORE INSERT ON TABLE_NAME
REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
ENABLE WHEN (NEW.ID IS NULL)
BEGIN SELECT SEQ_NEW INTO : NEW.IDFROM DUAL
END二、序列+显示调用
同样先创建触发器 CREATE SEQUENCE SEQ_NAMEINCREMENT BY 1MINVALUE 1NOMAXVALUESTART WITH 1NOCYCLENOCACHE下面显示调用INSERT INTO TABLE_NAME VALUES(SEQ_NAME.NEXTVAL)三、先指定主键...
/*第一步:创建表格*/
2 create table t_user(
3 id int primary key, --主键,自增长
4 username varchar(20),
5 password varchar(20),
6 type varchar(20)
7 );
2、创建自增序列信息1 /*第二步:建立自定义的sequence*/
2 CREATE SEQUENCE user_sequence
3 increment by 1 -- 每次加几个
4 start with 1 -- 从1开始计数
5 nomaxvalue ...