Closed cbqqkcel closed 1 year ago
这是插入后的数据,之前的最大ID是1548。
通过alter sequence语句修改sequence后产生新的版本,但是跟字段关联的sequence却是老版本,所以无法使用新修改的值
问题已修复,感谢报告bug。
你是从哪里知道 (next value for myseq) 这种冷门的用法,并且用的还是 system 自动生成的内部 sequence。
你是从哪里知道 (next value for myseq) 这种冷门的用法,并且用的还是 system 自动生成的内部 sequence。
可以这样改SEQ吗 update INFORMATION_SCHEMA.SEQUENCES set CURRENT_VALUE = 1549 where SEQUENCE_NAME = 'SYSTEM_SEQUENCE_EE1F314E_25F9_4CAA_8E30_C2F8B83C8C69'
不建议直接使用 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 表是只读的。
create table if not exists Seller ( id long auto_increment primary key, }
我创建表是这样的,然后用Datagrip查询出来的DDL是上面看到的那样子,会自动查询系统自己创建的SEQ
auto_increment 就对应一个私有的 system sequence,设计的目的就是不能让应用插手。 私有 system sequence 的值是会自动根据 primary key 变化的。 如果现有 id 最大是10,然后你自己 insert 新记录时 id 是20,下一个 auto_increment 的 id 就是21了,删除现有记录时私有 system sequence 的值不受影响。
auto_increment 就对应一个私有的 system sequence,设计的目的就是不能让应用插手。 私有 system sequence 的值是会自动根据 primary key 变化的。 如果现有 id 最大是10,然后你自己 insert 新记录时 id 是20,下一个 auto_increment 的 id 就是21了,删除现有记录时私有 system sequence 的值不受影响。
好的谢谢
我刚刚新提交了一个代码, 修改 system sequence 也可以用 ALTER SEQUENCE PUBLIC.SYSTEM_SEQUENCE_9AAF7419_A2BB_4D57_9337_D17693158F81 RESTART WITH 500; 新的值也会立刻生效。
修改SEQ之后插入还是提示Unique index or primary key violation,需要手动设置一下ID值插入后,自动的才会生效