On Mon, 2 Oct 2006 02:48:23 +0300 Konstantin Korikov
<lostcl***@i*****.ua> wrote:
> CREATE TABLE test (foobar SERIAL NOT NULL PRIMARY KEY, name VARCHAR);
Спасибо.
А как мне из perl работать с sequence? Я читал док-цию по DBI/DBD::Pg и
нашёл следущее:
$dbh->do("CREATE SEQUENCE lii_seq START 1");
$dbh->do("CREATE TABLE lii (
foobar INTEGER NOT NULL UNIQUE DEFAULT
nextval('lii_seq'), baz VARCHAR)");
$SQL = "INSERT INTO lii(baz) VALUES (?)";
$sth = $dbh->prepare($SQL);
for (qw(uno dos tres cuatro)) {
$sth->execute($_);
my $newid =
$dbh->last_insert_id(C<undef>,undef,undef,undef,{sequence=>'lii_seq'});
print "Last insert id was $newid\n"; }
И обяснение к ней туманное:
Attempts to return the id of the last value to be inserted into a
table. You can either provide a sequence name (preferred) or provide a
table name with optional schema. The $catalog and $field arguments are
always ignored.
А ещё это может и некорректно работать:
This will fail if the sequence has not yet been used in the current
database connection.
Интерпритатор "ругается" на C<undef>, да и мне кажется, что функция
last_insert_id - это лишний запрос к БД, так ли это? А т.к. она может и
некорректно работать, то, может, логичней будет делать собственный
запрос для получения id новой записи, если оно определяемо однозначно?
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 28064; Возраст листа: 1166; Участников: 1707
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/596487