Oracle 自增长字段
建SEQUENCE序列
CREATE SEQUENCE 序列名字(例如:"URLIMAGE_SEQ") MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 101 CACHE 10 NOORDER NOCYCLE ;
建trigger 触发器
create or replace trigger 触发器名字(例如:URLIMAGE_TRI )
before insert
on 映射的表名(例如:URLIMAGE )
for each row
begin
select 刚建的序列名(例如:URLIMAGE_seq).nextval into :new.增长字段名(例如:PICID) from dual;
end;
通过创建序列来实现
ORACLE SEQUENCE的简单介绍
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中
可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.currval from DUAL;
但是要注意的是:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?
- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
2、Alter Sequence
你或
相关文档:
Oracle存储过程转成Sqlserver存储过程
1.日期转换
Oracle: TO_NUMBER(TO_CHAR(SYSDATE, 'YYYYMMDD'))
SqlServer:CAST(CONVERT(CHAR(8),GETDATE(), 112) AS INT)
注:其中‘YYYYMMDD’格式 对应112
2.ROWID转换
Oracle: ROWID
SqlServer: PRIMARY KEY(表主键)
3.ROWNUM ......
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX ......
oracle学习笔记_触发器
触发器
是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
功能:
1、 允许/限制对表的修改
2、 自动生成派生列,比如自增字段
3、 强制数据一致性
4、 提供审计和日志记录
5、 防止无效的事务处理
6、 启用复杂的业务逻辑
开始
create trigger biufe ......
Data Pump 反映了整个导出/导入过程的完全革新。不使用常见的 SQL 命令,而是应用专
用 API(direct path api etc) 来以更快得多的速度加载和卸载数据。
1.Data Pump 导出 expdp
例
子:
sql>create directory dpdata1 as '/u02/ ......
备份
直接拷贝oracle目录下的admin、oradata(datafile, controlfile,redo)、flash_recovery_area三个文件夹,db_1目录下database(PWDfile、pfile)、dbs(spfile)、NETWORK\ADMIN(listener.ora、tnsnames.ora),到其他存储实现备份。
恢复
方法一:最简单的方法(需建库)
1.创建一个和原来一样的数据库。(安装路径和数 ......