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

时间:2017-03-05 03:41:38

标签: java sql oracle alter

我创建了一个序列,我想要一个表来使用它。序列的创建工作正常。但是,当我尝试更改表以便使用序列时,我收到此错误(在personInformationSequenceAlterTest中):

  

ORA-00940:ALTER命令无效

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

    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";

2 个答案:

答案 0 :(得分:2)

您的alter语句存在语法问题。

试试这个(假设该列的数据类型为int。相应地更改):

alter table personInformationTest modify (personId int default seq_person.nextval);

这只适用于Oracle 12c及更高版本。

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

insert into personInformationTest (personId, . . .)
values (seq_person.nextval, . . .)

答案 1 :(得分:0)

通过更改

进行检查
  

String personInformationSequenceAlterTest =                 " alter table personInformationTest"               +"改变列personId"               +"设置默认的nextval(' seq_person')";

  

String personInformationSequenceAlterTest =                 " alter table personInformationTest"               +"修改列personId"               +"设置默认的nextval(' seq_person')";

在Oracle和MySql中,我们使用"修改"用于更改现有列。在SQL Server / MS Access中," Alter"用来 。