DB2和Oracle中新建sequence
DB2 sequence 的创建是否带有双引号,引发的一个生产系统问题
create sequence x3; -- 执行成功
create sequence "x3" -- 执行成功
(实际上创建了一个名称为 "x3" 的sequence,也可以用 X3 来访问)
values Nextval for x3 --执行成功,值为 1
values prevval for X3 --执行成功,值为 1
create sequence Y3; -- 执行成功,可以用 Y3 和 y3 或者 "Y3" 来访问
create sequence "Y3" -- 执行失败 报已经存在错误
values Nextval for Y3 -- 执行成功,值为 1
values Nextval for y3 -- 执行成,值为 2
create sequence z3; -- 执行成功
create sequence "z3" -- 执行成功
(实际上创建了一个名称为 "z3" 的 sequence,注意是带引号的)
--values prevval for z3 -- 报错 因为还没有值所以报错
values Nextval for z3 -- 执行成功,值为 1
values Nextval for z3 -- 执行成功,值为 2
values Nextval for "z3" -- 执行成功,值为 1
---------------------------
ORACLE sequence
create sequence x3; -- 执行成功
create sequence "x3" -- 执行成功
(说明在 oracle 中 创建 sequence 当引号中有小写字母的时候,带引号和不带引号是不一样的)
--select x3.prevval from dual -- 报错
--select X3.prevval from dual -- 报错
select x3.Nextval from dual -- 执行成功 值为 1
select x3.Nextval from dual -- 执行成功 值为 2
select X3.Nextval from dual -- 执行成功 值为 3 实际上是 x3 这个 sequence
select "x3".nextval from dual -- 执行成功 值为 1
select "x3".nextval from dual -- 执行成功 值为 2
-------------------------------
create sequence Y3; -- 执行成功
create sequence "Y3" -- 执行失败,报错,提示已经存在,
(说明 oracle 中创建 sequence 如果是大写字母,跟创建带引号的是一样的。)
select Y3.nextval from dual -- 执行成功 值为 1
select "Y3".nextval from dual -- 执行成功 值为 2
-------------------------------
create sequence "A" -- ok
select "A".nextval from dual -- ok
select a.nextval from dual -- ok
select A.nextval from dual -- ok
select "A".nextval from dual -- ok
select "a".nextval from dual -- error
-------------------------------
create sequence "b" -- ok
select "b".nextval from dual -- ok
select b.nextval from dual -- error
select B.nextval from dual -- error
select "B".nextval from dual -- error
select "b".nextval from dual -- ok
-------------------------------
create sequence "a"
select a.nextval from dual --error
select A.nextval from dual --error
select "a".nextval from dual -- ok
select "A".nextval from dual -- error
-------------------------------
create sequence "B"
select b.nextval from dual -- ok
select B.nextval from dual -- ok
select "b".nextval from dual -- error
select "B".nextval from dual -- ok
drop sequence B --ok
drop sequence a --error
drop sequence "a" --ok
create sequence "B" -- ok
drop sequence b --ok
create sequence "B" -- ok
drop sequence "b" --error
drop sequence b -- ok
---------------------------