я таблица называется BUILD_INFO
и она имеет следующие столбцы:Получение конкретной строки просто вставляется в таблицу SQL
BUILD_ID
BUILD_NAME
DATE
USER
BUILD_ID
i s поле автоинкремента, поэтому я не устанавливаю его, когда я вставляю. Это первичный ключ, который используется для связи этой строки в этой таблице с другими строками в других таблицах.
Когда я вставляю новую строку в таблицу BUILD_INFO
, я хочу знать установленную BUILD_ID
, поэтому я могу ее загрузить и использовать, когда добавляю строки в другие таблицы.
Я не могу запросить его другими столбцами, потому что другие строки могут дублировать эти значения столбцов. Я не могу просто потребовать таблицу и вытащить самый большой BUILD_ID
, потому что другой пользователь мог бы добавить строку после этого. Было бы неплохо, если бы что-то вроде Row Number
, которое я мог бы получить и запросить строки. Что-то подобное существует?
Я пишу свой сценарий в Perl, используя модуль DBI
, и моей базой данных может быть Oracle или MySql.
Как получить информацию о строке, которую я только что вставил в SQL, или используя модуль Perl DBI
?
Я читаю документацию, но неясно, где (или если) она указывает следующую информацию. Должен ли я понять, что last_inser_id специфичен для моего dbHandle? Поэтому, если я вставляю строку, используя ее, и спаю в течение 30 секунд, в течение которого N количество строк было вставлено другими dbHandles, когда мой dbHandle просыпается и отправляется на получение его last_insert_id, он будет иметь тот, который он вставил, прежде чем он перешел к спать? –
Наверняка это достаточно простая вещь для проверки. Просто напишите тестовую программу с более чем одной dbh и посмотрите, что происходит с last_insert_id, когда вы вставляете строки, используя разные дескрипторы базы данных. Мне кажется, что last_insert_id установлен и сохраняется, когда происходит вставка, поэтому он будет правильным, независимо от того, что произошло на других дескрипторах. –
@Dr. Dredel: да, по крайней мере, для MySQL; для Oracle, проверьте документацию для используемого DBD. – ysth