【发布时间】:2015-12-11 00:03:56
【问题描述】:
我已经创建了这样的表格项目:
CREATE TABLE projects (
project_id NUMBER(10,0) GENERATED BY DEFAULT ON NULL AS IDENTITY ,
project_name VARCHAR2(75 CHAR) NOT NULL
然后我在从旧的 MySQL 表中导入数据时插入了大约 150,000 行。 MySQL 有我需要保留的现有 ID 号,因此我在插入期间将 ID 号添加到 SQL 中。现在,当我在 oracle 表中插入新行时,id 是一个非常低的数字。您能告诉我如何将 project_id 列上的计数器重置为从 150,001 开始,以免弄乱我现有的任何 ID 号码吗?基本上我需要oracle版本:
ALTER TABLE tbl AUTO_INCREMENT = 150001;
编辑:Oracle 12c 现在支持身份数据类型,允许自动编号主键,不需要我们创建序列 + 插入触发器。
解决方案: 在一些有创意的谷歌搜索词之后,我能够在 oracle 文档网站上找到this 线程。这里是更改身份的 nextval 的解决方案:
ALTER TABLE projects MODIFY project_id GENERATED BY DEFAULT ON NULL AS IDENTITY ( START WITH 150000);
【问题讨论】:
-
我没有任何序列。我需要更改我的身份列。
-
我没有重复您的问题(并删除了 MySQL 标签),因为我认为它与现有问题有明显的不同。随意添加您的解决方案作为答案(而不仅仅是将其编辑到问题中)。
标签: oracle12c