mark_seq.nextval是什么意思呀?在一个存储过程中的
公司实习,第一次碰ORACLE,学下老师给的程序,现在要用存储过程填一个ID字段,这个字段没有实际业务意义,只是在每次新记录来的时候自己加1作为区分,也顺便可以做主键,在...
公司实习,第一次碰ORACLE,学下老师给的程序,现在要用存储过程填一个ID字段,这个字段没有实际业务意义,只是在每次新记录来的时候自己加1作为区分,也顺便可以做主键,在老师的程序中看到mark_seq.nextval这句话填在insert句子的id字段上,到自己的sql框里打了mark_seq果真有这个对象,好像不是老师自己定义的,问下这个到底是什么?百度不到,想知道它的原理
展开
2个回答
展开全部
mark_seq 是一个 序列号
SQL> CREATE SEQUENCE mark_seq
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环
Sequence created.
mark_seq.nextval 就是那个 序列号的 下一个 数值.
下面是一个 使用触发器,来处理 序列号的例子:
SQL> CREATE SEQUENCE test_sequence2
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环
Sequence created.
SQL> CREATE TABLE test_create_tab2 (
2 id INT,
3 val VARCHAR(10),
4 PRIMARY KEY (id)
5 );
Table created.
SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
2 BEFORE INSERT ON test_create_tab2
3 FOR EACH ROW
4 BEGIN
5 SELECT test_sequence2.nextval INTO :new.id FROM dual;
6 END;
7 /
Trigger created.
SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');
1 row created.
SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');
1 row created.
SQL> SELECT * FROM test_create_tab2;
ID VAL
---------- --------------------
1 NO id
2 id no use
SQL> CREATE SEQUENCE mark_seq
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环
Sequence created.
mark_seq.nextval 就是那个 序列号的 下一个 数值.
下面是一个 使用触发器,来处理 序列号的例子:
SQL> CREATE SEQUENCE test_sequence2
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环
Sequence created.
SQL> CREATE TABLE test_create_tab2 (
2 id INT,
3 val VARCHAR(10),
4 PRIMARY KEY (id)
5 );
Table created.
SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
2 BEFORE INSERT ON test_create_tab2
3 FOR EACH ROW
4 BEGIN
5 SELECT test_sequence2.nextval INTO :new.id FROM dual;
6 END;
7 /
Trigger created.
SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');
1 row created.
SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');
1 row created.
SQL> SELECT * FROM test_create_tab2;
ID VAL
---------- --------------------
1 NO id
2 id no use
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询