首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现有表-ORA-00940上创建序列:无效的ALTER命令

问在现有表-ORA-00940上创建序列:无效的ALTER命令
EN

Stack Overflow用户
提问于 2017-03-05 03:41:37
回答 2查看 3.3K关注 0票数 1

我创建了一个序列,我想要一个表来利用它。该序列的创建工作良好。但是,当我试图修改表以利用序列时,我得到了这个错误(在personInformationSequenceAlterTest中):

ORA-00940:无效的ALTER命令

请注意我需要使用Java (Eclipse )。

代码语言:javascript
复制
    String personInformationSequenceTest = 
              "CREATE SEQUENCE seq_person "
            + "start with 1 "
            + "increment by 1 "
            + "NOCACHE "
            + "NOCYCLE ";

    String personInformationSequenceAlterTest =
              "alter table personInformationTest "
            + "alter column personId " 
            + "set default nextval('seq_person')";

    String personInformationSequenceOwnedTest = 
            "alter sequence seq_person owned by personInformationTest.personId";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-05 03:48:59

alter语句有语法问题。

尝试此操作(假设该列的数据类型为int。(相应修改):

代码语言:javascript
复制
alter table personInformationTest modify (personId int default seq_person.nextval);

这将只在Oracle 12c和更高版本中工作。

对于11g或更低的值,可以使用触发器。如果不想使用触发器,则可以在插入中显式使用seq_person.nextval。

代码语言:javascript
复制
insert into personInformationTest (personId, . . .)
values (seq_person.nextval, . . .)
票数 2
EN

Stack Overflow用户

发布于 2017-03-05 03:54:50

通过改变检查

字符串personInformationSequenceAlterTest = "alter“+ "alter”+ "set default nextval('seq_person')";

至

字符串personInformationSequenceAlterTest = "alter“+”修改列personId“+ "set default nextval('seq_person')";

在甲骨文和MySql中,我们使用“修改”来修改现有列。在Server / MS Access中,使用"Alter“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42604263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档