![](/img/trans.png)
[英]ERROR java.sql.SQLException: ORA-01722: invalid number while running a Prepared Statement to alter a Sequence
[英]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.