标签: sequence-sql

Oracle序列事务性

我需要一个特定的业务场景,在一个实体(而不是PK)上设置一个序列中的数字(序列必须是最小值和最大值之间的数字)

我定义了这样的序列:

CREATE SEQUENCE MySequence
  MINVALUE 65536 
  MAXVALUE 4294967296 
  START WITH 65536
  INCREMENT BY 1
  CYCLE
  NOCACHE
  ORDER;
Run Code Online (Sandbox Code Playgroud)

在Java代码中,我从序列中检索数字,如下所示:

select mySequence.nextval from dual
Run Code Online (Sandbox Code Playgroud)

我的问题是:

如果我select mySequence.nextval from dual在事务中调用此" "并且在另一个事务中同时调用相同的方法(并行请求),则确定序列返回的值是否不同?

是不是可以从第一个事务中读取未提交的值?

因为假设我没有使用序列和普通表,我将增加序列,然后如果trasactinalitY是默认的"READ COMMITTED",则事务2将能够读取相同的值.

java sql oracle hibernate sequence-sql

12
推荐指数
2
解决办法
1万
查看次数

在Netezza中,我试图在case语句中使用序列,但序列值不会增加

以下是使用的序列创建语法:

CREATE SEQUENCE BD_ID_SEQ AS INTEGER
    START WITH 999
    INCREMENT BY 1
    NO MINVALUE 
    NO MAXVALUE 
    NO CYCLE;
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下值记录的表:

b_id
-------
2547
NULL
2800
NULL
NULL
NULL
NULL

我执行以下操作:

select case 
          when b_id is NULL then cast((select next value for bd_id_seq) as character varying(10)) 
          else b_id 
       end b_id
from table1;
Run Code Online (Sandbox Code Playgroud)

结果是:

b_id
-------
2547
1000
2800
1000
1000
1000
1000

我在期待:

2547
1000
2800
1001
1002
1003
1004

任何想法为什么在case语句中序列似乎没有增加超过第一个值?谢谢,金妮

netezza sequence-sql

5
推荐指数
1
解决办法
4859
查看次数

序列必须与它所链接的表具有相同的所有者

有以下sql,最后一行出错, ERROR: sequence must have same owner as table it is linked to [Failed SQL: (0) ALTER SEQUENCE test_table_seq OWNED BY test_table.id

CREATE SEQUENCE test_table_seq;

ALTER TABLE test_table ALTER COLUMN id SET DEFAULT nextval('test_table_seq');
ALTER TABLE test_table ALTER COLUMN id SET NOT NULL;
ALTER SEQUENCE test_table_seq OWNED BY test_table.id;
Run Code Online (Sandbox Code Playgroud)

任何建议如何避免该错误?谢谢!!!!

postgresql sequence-sql

1
推荐指数
1
解决办法
1814
查看次数

标签 统计

sequence-sql ×3

hibernate ×1

java ×1

netezza ×1

oracle ×1

postgresql ×1

sql ×1