繁体   English   中英

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

[英]Creating a sequence on an existing table - ORA-00940: invalid ALTER command

我创建了一个序列,并希望有一个表格来使用它。 序列的创建工作正常。 但是,当我尝试更改表以利用序列时,出现此错误(在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";

您的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, . . .)

更改检查

String personInformationSequenceAlterTest =“更改表personInformationTest” +“更改列personId” +“设置默认的nextval('seq_person')”;

String personInformationSequenceAlterTest =“更改表personInformationTest” +“修改列personId” +“设置默认的nextval('seq_person')”;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM