在oracle中创建自动增长字段
来源:互联网 发布:sql server 百度网盘 编辑:程序博客网 时间:2024/05/01 11:26
oracle在创建表时和其他的数据库有点不一样,如SQL SERVER可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置为主键,有利于我们进行数据的插入操作。MySql中可以使用“auto_increment”即可。但是oracle有点麻烦,需要使用序列和触发器达到目的。
首先我们创建一个会员表。
DROP TABLE "DATABASE"."TEST";CREATE TABLE "DATABASE"."TEST" ("ID" NUMBER PRIMARY KEY NOT NULL, "NAME" VARCHAR2(255 BYTE) NULL ,"MEMBERSHIP" VARCHAR2(255 BYTE) NOT NULL ,"SEX" VARCHAR2(255 BYTE) NULL ,"BIRTHDAY" VARCHAR2(255 BYTE) NULL ,"PHONE" VARCHAR2(255 BYTE) NULL ,)
第二,创建会员表自动增长序列
-- 再建一个序列SEQ_TESTcreate sequence SEQ_TESTminvalue 1 --最小值nomaxvalue --不设置最大值 maxvalue最大值start with 1 --从1开始计数increment by 1 --每次加1个nocycle --一直累加,不循环nocache; --不建缓冲区
√删除序列语句DROP sequence SEQ_TEST
其实一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。
curval:返回序列的当前值
nextval:先增加序列的值,然后返回序列值
以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq(新建的序列号名)序列。最后查询customers表中的id字段。
create table customers(id int primary key not null, name varchar(15));
insert into customers values(customer_id_seq.nextval, 'name1');
insert into customers values(customer_id_seq.nextval, 'name2');
curval:返回序列的当前值
nextval:先增加序列的值,然后返回序列值
以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq(新建的序列号名)序列。最后查询customers表中的id字段。
create table customers(id int primary key not null, name varchar(15));
insert into customers values(customer_id_seq.nextval, 'name1');
insert into customers values(customer_id_seq.nextval, 'name2');
第三,创建触发器将序列中的值赋给插入会员表的行
CREATE OR REPLACE TRIGGER SEQ_TEST_TG BEFORE INSERT ON TEST FOR EACH ROW WHEN (new.ID is null)begin select SEQ_TEST.nextval into :new.ID from dual;end;
这里的ID 是表中的需要自增长的字段
/* create or replace tirgger insert_employee_autoinc
before insert on employee
for each row
begin
select employ_autoinc.nextval into :new.Id from dual;
end insert_employee_autoinc
*/
最后测试一下我们的成果
INSERT INTO "TEST"(NAME,MEMBERSHIP,SEX,BIRTHDAY,PHONE) VALUES ('陈', 'B073', '男', '1126', '15915554615');INSERT INTO "TEST"(NAME,MEMBERSHIP,SEX,BIRTHDAY,PHONE) VALUES ('王', 'B071', '女', '0304', '13054115694');INSERT INTO "TEST"(NAME,MEMBERSHIP,SEX,BIRTHDAY,PHONE) VALUES ('曹', 'B070', '男', '0815', '13813778941');INSERT INTO "TEST"(NAME,MEMBERSHIP,SEX,BIRTHDAY,PHONE) VALUES ('郑', 'B078', '男', '1019', '13223778965'); INSERT INTO "TEST"(NAME,MEMBERSHIP,SEX,BIRTHDAY,PHONE) VALUES ('唐', 'B078', '女', '1019', '13223778965');
select * from TEST;
1 0
- 在oracle中创建自动增长字段
- 在oracle中创建自动增长字段
- 在oracle中创建自动增长字段
- 在Oracle、MySQL、MS SQL Server中创建自动增长字段
- 在Oracle、MySQL、MS SQL Server中创建自动增长字段
- 在Oracle、MySQL、MS SQL Server中创建自动增长字段
- 如何在oracle中设置字段自动增长
- 如何在oracle中设置字段自动增长
- 如何在oracle中设置字段自动增长
- 如何在oracle中设置字段自动增长
- 在oracle表中怎样创建自增长字段
- 在oracle表中怎样创建自增长字段
- Oracle自动增长字段
- Oracle自动增长字段
- oracle字段自动增长
- 在Oracle中使用自增长字段
- 用SQL在Access中创建带自动增长字段的表
- 如何在oracle数据库中设置自动增长的id字段
- 泛型的高级应用
- BZOJ1029建筑抢修
- iOS开发学习笔记——表格1(UITableView)
- python读取目录下的所有文件和文件夹
- CodeForces - 618B Guess the Permutation (模拟)
- 在oracle中创建自动增长字段
- ViewPager实现Gallery画廊效果——仿慕课网app-求职路线计划-效果(一)
- Java中static修饰类的问题
- objective-c - 基础篇 - NSNumber与NSdate与NSExcetion
- 设计模式学习笔记——单例模式
- 实例变量和类变量的区别
- leetcode 每日一题 235. Lowest Common Ancestor of a Binary Search Tree
- Androdi Bug说明
- 【自分の総括】设计模式之工厂模式(实例分析)