• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Return Id In Postgresql

  • Автор темы AnaStas
  • Дата начала
A

AnaStas

Прошу модераторов форума дать консультацию по следующему вопросу:
Рабочая среда Perl - PostgreSQL
Есть запрос
Код:
$dbh->do ("INSERT INTO table (id, param1,param2) VALUES ('$argum1','$argum2','$argum3')") 
or die $dbh->errstr;
И никак не могу получить индекс этой последней записи. Просмотрел материал в инете. Там очень много для MySQL, гораздо меньше для PostgreSQL, но то что есть не работает. Ни currval(''table_id_seq''), ни RETURNING id, ни выбрать oid - все напрасно. Видимо, что-то не понимаю или недопонимаю. Подскажите, пожалуйста.
 
?

????


там даже пример есть:
[sql]INSERT INTO distributors (did, dname) VALUES (DEFAULT, 'XYZ Widgets')
RETURNING did;[/sql]
как в перл завернуть, я надеюсь, объяснять не надо
 
A

AnaStas

???? (Почетный секретчик), в тексте я указал, что RETURNING не проходит, т.к. версия PostgreSQL ниже третьей, да и PostgreSQL 8.3.8 Documentation я просматривал.
Но выход, все-таки, неожиданно найден :) и подсказал мне его наш Главный:
- Что ВЫ елозиете по интернету, - заметил он- поработайте сначала с Perl-документацией. Там что-то такое есть! Давайте-ка ПУСК->ВСЕ ПРОГРАММЫ->ActivePerl ...->Documentation. Откроется ActivePerl User Guide. Cпускайтесь в DBI и ищите нечто вроде Last insert ...
И точно! Есть там функция last_insert_id(). И вот ОН- работащий, тут же проверенный код:
Код:
. . . 
my $new_id;
$dbh->do ("INSERT INTO table (id, param1,param2) VALUES ('$argum1','$argum2','$argum3')") 
or die $dbh->errstr;
$new_id=$dbh->last_insert_id('', '', 'table', '');
. . .
Вот так и стал я сам себе модератор :)
Тема закрыта.
 
A

AnaStas

Что-то не видно там про версию
Прошу у форума прощения. Не правильно составлено предложение - зачастую мы забываем, что на форумы мы пишем, а не разговариваем. А это по смысловому восприятию могут быть разные вещи, ибо когда пишем, то используем причастные, деепричастные, временные и т.п. обороты, а в разговорной речи они часто опускаются. Отсюда и смысл подаваемого материала может быть нечетким, а зачастую и разным. Я, друзья, плохо продумал семантическую часть своей темы.
Обещаю исправиться :)
 
V

vital

Официально, администрацией форума, извинения приняты=) Добро пожаловать к нам)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!