Возможно, вы захотите использовать Identities
- Создание таблицы с удостоверением дает вам возможность опустить значения ID
и позволить Oracle использовать последовательность в нужном столбце:
1,Давайте создадим таблицу:
CREATE TABLE identities (
id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
description varchar2(100) NOT NULL
);
Таблица создана.
2.Вам потребуется создать первичный ключ для обеспечения уникальности:
alter table identities add constraint id_pk primary key (ID);
Таблица изменена.
3.Давайте вставим некоторые данные различными способами:
INSERT INTO identities (description)
VALUES('Insert Description omitting ID');
1 строка создана.
INSERT INTO identities (id,description)
VALUES(NULL,'Insert with explicit NULL value');
1 строка создана.
4.Сохранить выполненную работу
commit;
Фиксация завершена.
5.Проверьте результаты
select * from identities;
ID DESCRIPTION
---------- ---------------------------------------------
1 Insert Description omitting ID
2 Insert with explicit NULL value
Как видите, мы не указали никакого числа для ID
, но Identity
в столбце ID
для нас
Примечание: Имейте в виду, что вы можете вручную вставить ID
, но это будет портить Identity
, как это обычно происходит со стандартным Sequence
:
INSERT INTO identities (id,description)
VALUES(3,'Manually insert an ID value');
1 row created.
INSERT INTO identities (description)
VALUES('Test Nextval');
INSERT INTO identities (description)
*
ERROR at line 1:
ORA-00001: unique constraint (XXX.ID_PK) violated
Эта ошибка, потому что он пытается вставить '3' в идентификатор, который был вставлен вручную с оператором ранее.
Проверьте таблицу:
select * from identities;
ID DESCRIPTION
---------- ---------------------------------------------
1 Insert Description omitting ID
2 Insert with explicit NULL value
3 Manually insert an ID value
Перезапустите вставку «NEXTVAL»:
INSERT INTO identities (description)
VALUES('Test Nextval');
1 строка создана.
Повторно проверьте таблицу:
select * from identities;
ID DESCRIPTION
---------- ---------------------------------------------
1 Insert Description omitting ID
2 Insert with explicit NULL value
3 Manually insert an ID value
4 Test Nextval
Надеюсь, это поможет.