Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle11g Oracle SQL开发人员->;手动将序列增量更改10-->;需要承诺_Oracle11g_Oracle Sqldeveloper - Fatal编程技术网

Oracle11g Oracle SQL开发人员->;手动将序列增量更改10-->;需要承诺

Oracle11g Oracle SQL开发人员->;手动将序列增量更改10-->;需要承诺,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,如果我使用Oracle Sql Developer连接到11gR2并执行: 将序列myCounter增量改变10 我是否需要提交此声明。如果我执行此语句,在按下绿色提交按钮之前,网络连接丢失,序列是否仍然递增10 我不完全明白: 生成序列号时,序列将递增,与事务提交或回滚无关。您的alter语句不需要提交,因为它是DDL而不是DML。失去连接不会有任何影响。但它本身也不会增加序列值 它所做的是修改序列定义,以便下次以及以后每次调用nextval,生成的数字将增加10,而不是之前设置的任何数字(默

如果我使用Oracle Sql Developer连接到11gR2并执行:

将序列myCounter增量改变10

我是否需要提交此声明。如果我执行此语句,在按下绿色提交按钮之前,网络连接丢失,序列是否仍然递增10

我不完全明白:
生成序列号时,序列将递增,与事务提交或回滚无关。

您的
alter
语句不需要提交,因为它是DDL而不是DML。失去连接不会有任何影响。但它本身也不会增加序列值

它所做的是修改序列定义,以便下次以及以后每次调用
nextval
,生成的数字将增加10,而不是之前设置的任何数字(默认值为1)

作为一个快速演示:

CREATE SEQUENCE myCounter;

Sequence MYCOUNTER created.

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
         1

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
         2

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
         3
因此,默认情况下,序列每次递增一。然后在更改后,对
nextval
的每次调用都会增加10次,而不是1次:

ALTER SEQUENCE myCounter INCREMENT BY 10;

Sequence MYCOUNTER altered.

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
        13

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
        23
alter
本身没有使用或跳过10个值-否则第一个
nextval
将得到23个而不是13个。它只是改变了定义

您参考的文档说明,如果您回滚,则不会再次生成以前发布的任何编号:

ROLLBACK;

Rollback complete.

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
        33
你得到33分,不是23分。发出一个值,然后该值不再可用于任何其他会话,包括您自己的会话,以从另一个
nextval
调用获取-无论回滚或提交,或者该值是否实际用于任何用途。(如果序列设置为
循环
,最终可能会重新发出,但默认情况下不会)


还要注意的是,序列生成不是无间隙的,也不是无间隙的,因为回滚是如何处理的,缓存机制是如何工作的。数字也不总是严格按顺序发出-在RAC环境中,每个节点都有自己的缓存,并将从缓存中进行分配。

您的
alter
语句不需要提交,因为它是DDL而不是DML。失去连接不会有任何影响。但它本身也不会增加序列值

它所做的是修改序列定义,以便下次以及以后每次调用
nextval
,生成的数字将增加10,而不是之前设置的任何数字(默认值为1)

作为一个快速演示:

CREATE SEQUENCE myCounter;

Sequence MYCOUNTER created.

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
         1

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
         2

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
         3
因此,默认情况下,序列每次递增一。然后在更改后,对
nextval
的每次调用都会增加10次,而不是1次:

ALTER SEQUENCE myCounter INCREMENT BY 10;

Sequence MYCOUNTER altered.

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
        13

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
        23
alter
本身没有使用或跳过10个值-否则第一个
nextval
将得到23个而不是13个。它只是改变了定义

您参考的文档说明,如果您回滚,则不会再次生成以前发布的任何编号:

ROLLBACK;

Rollback complete.

SELECT myCounter.nextval from dual;

   NEXTVAL
----------
        33
你得到33分,不是23分。发出一个值,然后该值不再可用于任何其他会话,包括您自己的会话,以从另一个
nextval
调用获取-无论回滚或提交,或者该值是否实际用于任何用途。(如果序列设置为
循环
,最终可能会重新发出,但默认情况下不会)

还要注意的是,序列生成不是无间隙的,也不是无间隙的,因为回滚是如何处理的,缓存机制是如何工作的。数字也并非总是严格按顺序发布的——在RAC环境中,每个节点都有自己的缓存,并将从这些缓存中进行分配