Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修改了SEQ后没有立即生效 #201

Closed
cbqqkcel opened this issue Aug 30, 2023 · 10 comments
Closed

修改了SEQ后没有立即生效 #201

cbqqkcel opened this issue Aug 30, 2023 · 10 comments

Comments

@cbqqkcel
Copy link

image
image
image
image

修改SEQ之后插入还是提示Unique index or primary key violation,需要手动设置一下ID值插入后,自动的才会生效

@cbqqkcel
Copy link
Author

image
这是插入后的数据,之前的最大ID是1548。

@codefollower
Copy link
Member

通过alter sequence语句修改sequence后产生新的版本,但是跟字段关联的sequence却是老版本,所以无法使用新修改的值

问题已修复,感谢报告bug。

@codefollower
Copy link
Member

你是从哪里知道 (next value for myseq) 这种冷门的用法,并且用的还是 system 自动生成的内部 sequence。

@cbqqkcel
Copy link
Author

你是从哪里知道 (next value for myseq) 这种冷门的用法,并且用的还是 system 自动生成的内部 sequence。

image

@cbqqkcel
Copy link
Author

可以这样改SEQ吗
update INFORMATION_SCHEMA.SEQUENCES set CURRENT_VALUE = 1549 where SEQUENCE_NAME = 'SYSTEM_SEQUENCE_EE1F314E_25F9_4CAA_8E30_C2F8B83C8C69'

@codefollower
Copy link
Member

不建议直接使用 system sequence

你可以这样使用:
create sequence if not exists myseq;
create table mytable(f1 int default (next value for myseq), f2 int);

修改 sequence 只能用 alter sequence myseq restart with 50

information_schema 表是只读的。

@cbqqkcel
Copy link
Author

cbqqkcel commented Aug 30, 2023

create table if not exists Seller
(
id long auto_increment primary key,
}

我创建表是这样的,然后用Datagrip查询出来的DDL是上面看到的那样子,会自动查询系统自己创建的SEQ

@codefollower
Copy link
Member

auto_increment 就对应一个私有的 system sequence,设计的目的就是不能让应用插手。
私有 system sequence 的值是会自动根据 primary key 变化的。
如果现有 id 最大是10,然后你自己 insert 新记录时 id 是20,下一个 auto_increment 的 id 就是21了,删除现有记录时私有 system sequence 的值不受影响。

@cbqqkcel
Copy link
Author

auto_increment 就对应一个私有的 system sequence,设计的目的就是不能让应用插手。 私有 system sequence 的值是会自动根据 primary key 变化的。 如果现有 id 最大是10,然后你自己 insert 新记录时 id 是20,下一个 auto_increment 的 id 就是21了,删除现有记录时私有 system sequence 的值不受影响。

好的谢谢

@codefollower
Copy link
Member

codefollower commented Aug 30, 2023

我刚刚新提交了一个代码,
修改 system sequence 也可以用 ALTER SEQUENCE PUBLIC.SYSTEM_SEQUENCE_9AAF7419_A2BB_4D57_9337_D17693158F81 RESTART WITH 500;
新的值也会立刻生效。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants