Уважаемые разработчики, я хотел уточнить о поведении "identity
column". В релиз-ноте заявлено, что оно эмулирует поведение MySQL
"auto_increment" или PostgreSQL "serial".

Пусть мы имеем:
create table objects (
  id integer generated by default as identity primary key,
  name varchar(15)
);
COMMIT;

insert into objects (name) values ('Table');
insert into objects (name) values ('Book');
insert into objects (id, name) values (10, 'Computer');
COMMIT;

select * from objects;
          ID NAME
============ ===============
           1 Table
           2 Book
          10 Computer


Вопрос, если мы выполним еще один INSERT, то каким будут значения
генератора INDENTITY  ?

а) insert into objects (name) values ('SomeObject'); после выполнения
домен ID получит значение 11 ?

б) insert into objects (id, name) values (20, 'Computer'); после
выполнения домен ID получит значение 20, а при вставке следующей
записи insert into objects (name) values ('SomeObject'); домен ID уже
получит значение 21 ?

В целях экономии Вашего времени, можно ответить Да/Нет.

Ответить