From: | Попов Андрей <andrey(at)cursor(dot)ru> |
---|---|
To: | <pgsql-bugs(at)postgresql(dot)org> |
Subject: | I have problem with Postgres. |
Date: | 2002-11-14 08:40:53 |
Message-ID: | 000401c28bb9$8bf205a0$4000a8c0@ics.technology.lan |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Hi.
I have problem with Postgres.
I have perl script, that add 2 records in 2 tables. This script I run
from web throught web server Apache (on FreeBSD).
(perl version 5.005)
Tables structure:
create table object_list
(
obj_id serial primary key,
obj_name varchar(100)
);
create table texts
(
obj_id int4,
text_title varchar(100),
text_content oid
);
Algorithm:
1. Put one record in table object_list.
2. Get last id record from table object_list.
3. Put one record in table texts, where obj_id field is id from 2 step.
Problem:
Sometimes, I get next result - in table object_list inserting 2 record
and in table texts inserting 1 record.
What is happened?
Thanks for listening!
Best Regards, Andrey.
Script code:
#!/usr/bin/perl
use DBI;
use DBD::Pg;
$dbh =
DBI->connect("dbi:Pg:dbname=triz;host=localhost;port=6565","postgres",""
, {PrintError=>1, RaiseError=>1, AutoCommit=>0});
if (!$dbh)
{
print ("Error: $DBI::errstr\n");
exit
}
$obj_name = 'object_name';
$text_title = 'text_title';
$text_content = 'text_content';
create_text ($obj_name, $text_title, $text_content);
$dbh->commit;
$dbh->disconnect;
sub create_text
{
my ($obj_name, $text_title, $text_content) = @_;
my ($obj_id);
my $tempdir = '/tmp/';
eval
{
$sth = $dbh->prepare("insert into object_list (obj_name) values
(?)");
$sth->execute($obj_name);
$sth = $dbh->prepare("select max(obj_id) from object_list");
$sth->execute();
$max = $sth->fetchrow;
if($max>0)
{
$obj_id=$max;
}
else
{
$dbh->rollback;
exit;
}
$tempstr=$tempdir."text".$$.(time).".tmp";
open (TEMPF, ">".$tempstr);
print TEMPF $config{'text_content'};
close (TEMPF);
$sth=$dbh->prepare("insert into texts (obj_id, text_title,
text_content) values ( ?, ?, lo_import('".$tempstr."'))");
$sth->execute($obj_id, $text_title);
unlink $tempstr;
$sth->finish;
};
if ($@)
{
$dbh->rollback;
exit;
}
}
From | Date | Subject | |
---|---|---|---|
Next Message | pgsql-bugs | 2002-11-14 13:50:13 | Bug #818: There are no aggregate functions for type RELTIME |
Previous Message | Peter Muhlberger | 2002-11-14 04:12:08 | Can't drop / access / or create database |