У меня есть таблица оракула с уникальным столбцом id
. Когда я вставляю данные в таблицу, я увеличиваю число последних id
.Получите уникальный идентификатор, полученный при вставке в таблицу базы данных
insert into my_table vlaues((select max(id) from my_table), 'etc', 'etc');
Может быть несколько процессов, которые записывают в эту таблицу одновременно.
Автообнос on
.
В этой таблице нет другой уникальной колонки, кроме id
.
Когда я вставляю запись в таблицу, есть ли способ получить значение id
, полученное после ввода записи?
Как я могу видеть, если я использую select max(id) from my_table
после вставки, я не могу получить идентификатор, используемый в инструкции вставки, поскольку кто-то еще мог вставить еще одну запись, прежде чем я выпущу select
.
Это не безопасный способ иметь автоинкрементные идентификаторы - одновременный доступ приведет к дублированию идентификаторов (возможно, приведет к уникальным нарушениям ключа). – Luaan
Возможный дубликат [Autoincrement in oracle to уже созданная таблица] (http://stackoverflow.com/questions/28037303/autoincrement-in-oracle-to-already-created-table) –
Также ознакомьтесь с функциональностью автоинкремента колонки IDENTITY в Oracle 12c] (http://lalitkumarb.wordpress.com/2015/01/20/identity-column-autoincrement-functionality-in-oracle-12c/) и [Первичный ключ с автоматическим инкрементом в выпусках Pre 12c] (http: //lalitkumarb.wordpress.com/2015/01/20/auto-increment-primary-key-in-pre-12c-releases-identity-functionality/) –