Oracle 中的 ID 生成
ID generation in Oracle
我正在尝试在 Oracle 中创建一个 table,如下所示:
create table person (
person_id number(5) generated always as identity
minvalue 1
maxvalue 99999
increment by 1 start with 1
cycle
cache 10,
firstname varchar(10),
lastname varchar(10));
一切正常,但是当我尝试这样的操作时:
insert into person
values ('firstname', 'lastname');
我遇到了一个错误。当我尝试在应该是 ID 的地方输入一个数字时,我得到了一个不同的错误。
我很困惑,因为我最初认为以这种方式格式化 person_id 会自动生成唯一的 ID 值,所以我无法将它们放入。
我也对这一切如何融入 JDBC 感到有点困惑。如果我正在使用 Java 并在这样的 table 中插入一个元组,我如何才能将生成的 ID 放入我的 Java 程序中?我不能按名字和姓氏搜索,因为可能有两个人同名。
您需要列出 insert
:
的列
insert into person(firstname, lastname)
values ('firstname', 'lastname');
生成列的事实不会影响 insert
的语法。因此,没有列,插入与:
insert into person(person_id, firstname, lastname)
values ('firstname', 'lastname');
如果有两个值和三个列,您会遇到错误。
我正在尝试在 Oracle 中创建一个 table,如下所示:
create table person (
person_id number(5) generated always as identity
minvalue 1
maxvalue 99999
increment by 1 start with 1
cycle
cache 10,
firstname varchar(10),
lastname varchar(10));
一切正常,但是当我尝试这样的操作时:
insert into person
values ('firstname', 'lastname');
我遇到了一个错误。当我尝试在应该是 ID 的地方输入一个数字时,我得到了一个不同的错误。
我很困惑,因为我最初认为以这种方式格式化 person_id 会自动生成唯一的 ID 值,所以我无法将它们放入。
我也对这一切如何融入 JDBC 感到有点困惑。如果我正在使用 Java 并在这样的 table 中插入一个元组,我如何才能将生成的 ID 放入我的 Java 程序中?我不能按名字和姓氏搜索,因为可能有两个人同名。
您需要列出 insert
:
insert into person(firstname, lastname)
values ('firstname', 'lastname');
生成列的事实不会影响 insert
的语法。因此,没有列,插入与:
insert into person(person_id, firstname, lastname)
values ('firstname', 'lastname');
如果有两个值和三个列,您会遇到错误。