在oracle中创建自动增长字段
2015-11-04 09:46
639 查看
oracle在创建表时和其他的数据库有点不一样,如SQL SERVER可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置为主键,有利于我们进行数据的插入操作。MySql中可以使用“auto_increment”即可。但是oracle有点麻烦,需要使用序列和触发器达到目的。
首先我们创建一个员工表。
create table employee(
Id int ,
DeptNo number,
EmpNo number,
Ename varchar2(16),
Job varchar2(32),
Sal float,
HireDate date,
constraint pk_employee primary key(EmpNo)
);
第二,创建员工表自动增长序列
create sequence employ_autoinc
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
nocache;
第三,创建触发器将序列中的值赋给插入employee表的行
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 employee(DeptNo,EmpNo,Ename,job,sal,hiredate) values(520,5201002,'James zhou','PD',6000,to_date('2012-10-22','yyyy-mm-dd'));
select * from employee;
主要是你从网上COPY的代码里面
SELECT CHINA_ADDRESS_SEQU.NEXTVAL INTO:NEW.ID FROM DUAL
后面少了个符号";"
PL/SQL认为语句后面带有一个;才作为一个语句的结束
此外,不建议使用触发器做这个事情,不如使用
INSERT INTO china_address VALUES(CHINA_ADDRESS_SEQU.NEXTVAL,'sd',1);
更健壮.
首先我们创建一个员工表。
create table employee(
Id int ,
DeptNo number,
EmpNo number,
Ename varchar2(16),
Job varchar2(32),
Sal float,
HireDate date,
constraint pk_employee primary key(EmpNo)
);
第二,创建员工表自动增长序列
create sequence employ_autoinc
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
nocache;
第三,创建触发器将序列中的值赋给插入employee表的行
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 employee(DeptNo,EmpNo,Ename,job,sal,hiredate) values(520,5201002,'James zhou','PD',6000,to_date('2012-10-22','yyyy-mm-dd'));
select * from employee;
主要是你从网上COPY的代码里面
SELECT CHINA_ADDRESS_SEQU.NEXTVAL INTO:NEW.ID FROM DUAL
后面少了个符号";"
PL/SQL认为语句后面带有一个;才作为一个语句的结束
此外,不建议使用触发器做这个事情,不如使用
INSERT INTO china_address VALUES(CHINA_ADDRESS_SEQU.NEXTVAL,'sd',1);
更健壮.
相关文章推荐
- sql查询联系(Oracle)
- Oracle 10G sql 培训
- 解决“System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本”
- Oracle数据库的导出导入
- Oracle硬解析的几个例子
- Oracle数据库零散知识09 -- DBLink的创建(转)
- Oracle数据库零散知识08 -- 逻辑备份和还原(转)
- Oracle的软解析(soft prase)和硬解析(hard prase)
- ORACLE的临时表
- oracle rowNum
- powerdesigner逆向导出oracle数据库结构显示备注
- Oracle合并函数内容
- Oracle Exception In Loop
- oracle ORA-01033 错误的解决方案
- Oracle中的递归总结
- oracle:ora-12560:tns:协议适配器错误
- Oracle创建DBlink和Sysnonyms(同义词,表映射)的方法及常见问题处理
- sqlserver数据导入到oracle中
- Oracle集合操作函数:union、intersect、minus
- oracle客户端安装