在ORACLE中创建触发器出现错误

错误在最上面两行... 错误在最上面两行 展开
 我来答
匿名用户
2014-12-06
展开全部
序列号被调用时,它会自动采取增加oracle的顺序,通常使用在由地方排序所需的序列号每次。
1,创建序列
你必须先有CREATE SEQUENCE或CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
递增1 - 加几每个
从1开始 - 从一开始计数
NOMAXVALUE - 不设最高
NOCYCLE - 一直累加,不循环CACHE
10;

一旦定义emp_sequence,你可以使用CURRVAL,NEXTVAL
CURRVAL =返回序列添加
NEXTVAL =值序列的当前值,然后返回序列价值观
如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL

可以使用的地方顺序:
- 不包含子查询,SELECT语句
快照,看 - INSERT语句中的子查询 BR> - NSERT VALUES语句中
- 在

UPDATE的SET可以看到下面的例子:
INSERT INTO EMP VALUES
(empseq.nextval,“刘易斯”,“秘书”,7902 ,SYSDATE,1200,NULL,20);

SELECT empseq.currval FROM DUAL;

然而,需要注意的是:
- 首先NEXTVAL返回初始值;随后的NEXTVAL会自动增加你的增量定义BY值,然后返回增加值。 CURRVAL SEQUENCE总是返回当前值,但之后的第一个NEXTVAL初始化使用CURRVAL,否则会出错。一个NEXTVAL会增加SEQUENCE的值,所以如果你使用多个NEXTVAL相同的语句中,该值是不一样的。明白了吗?

- 如果指定CACHE值,ORACLE可以预先放置一些序列在内存里面,所以更快的访问。服用后里面缓存,Oracle自动再取一组到缓存中。使用高速缓冲存储器的可能跳号,如一个数据库停机突然不正常(关机中止),该序列中的高速缓存都将丢失。这种情况下,可以防止当与非缓存创建序列。

2,阿尔特序列
你还是主人的序列,或者有ALTER ANY SEQUENCE权限来改变顺序。你可以改变的参数启动顺序删除所有外面。如果你想改变的初始值,必须删除序列,然后重新创建的
ALTER SEQUENCE emp_sequence
递增的例子
阿尔特序列10
MAXVALUE 10000
CYCLE - 10000刮
NOCACHE后;.点击看详细的初始化参数影响顺序:
SEQUENCE_CACHE_ENTRIES =设置序列可以同时缓存的数量。

可以很简单的拖放序列
DROP SEQUENCE order_seq;

例如序列:
CREATE SEQUENCE SCOTT.DMIFPOSTID
START WITH 261
递增1
NOMINVALUE
NOMAXVALUE
NOCYCLE
CACHE 20
NOORDER

3,如何使用第一种方法
:一般需要创建触发器(TRIGGER),使得插入产生的运行顺序号增量数据之前。
示例触发
- 创建表
创建表TEST
(SEQ
INTEGER NOT NULL,
NAME VARCHAR2(20),
PWD VARCHAR2(20)

表空间USERS
和pctfree 10
INITRANS 1
MAXTRANS 255
存储

初始64K
MINEXTENTS 1
MAXEXTENTS无限
);
- 创建/重新创建小学,独特的外键约束
改变表TEST
添加约束PK_TEST主键(SEQ)
使用指数
表空间USERS
和pctfree 10
INITRANS 2
MAXTRANS 255
存储

初始64K
MINEXTENTS 1
MAXEXTENTS无限
);

创建或插入之前重新触发TI_TEST
上测试
的每一行
声明
- 局部变量这里
开始
SELECT SEQ_TEST.NEXTVAL
INTO :NEW.SEQ
FROM DUAL;
结束TI_TEST;
插入语句插入测试值('AA','AA');
第二种方法:当您插入数据您可以直接调用。
插入到表(ID,姓名)值(seq_name.nextval,'名');
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式