I'm not sure what is causing the problem in your case, but I have afew
comments.

1. Use Oracle sequences for the unique key unless you have a good reason not
to.  What you are trying to do is already built into Oracle, no need to
invent your own way to do it.

[In Oracle SQL*Plus or other tool]
// Change options and sequence name as needed.
Create Sequence SQ_MySequence
  Increment By 1
  Start WIth 1
  MaxValue 10000000
  MinValue 1
  NoCycle
  Cache 20
  NoOrder

Then in Perl...

my $sth = $dbh->prepare("Insert Into TABLE (keyfield,val1,val2) Values
(SQ_MySequence.NextVal,?,?)");

2. Make sure you lock the file!  If there is a possiblity that two instances
of the script will be accessing the file at the same time you need to lock
the table to prevent this.

See perldoc -f flock

Rob


-----Original Message-----
From: Mark Martin [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, January 15, 2002 12:30 PM
To: [EMAIL PROTECTED]
Subject: UNIQUE KEY


Hi,
I'm trying to maintain a unique key in an Oracle Table while working on the
table using DBI. the unique key is just a no. read in from a txt file and
incremented for each record - supposedly. In fact I'm getting unique
constraint violation. Can anybody tell me what is wrong with this code,(the
statement handler inserts into the table)
cheers,
Mark

if (condition){
                open (IN,$uniquefile) or die "Cannot Open $uniquefile \n";
                $uniquemarker=<IN>;
                close(IN);
                $uniquemarker++;

                $sth1->execute($uniquemarker,$var1,$var2) or die "Can't
execute SQL
statement: $DBI::errstr\n";                                     
                }

                open (OUT,">$uniquefile");
                print OUT "$uniquemarker";

$dbh1->disconnect();
exit;




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to