I gather that you have a DB table designed without any unique keys and you are trying to add the keys after the fact with an update. My suggestion is that you dump all the table data out to a file, create a new table with a primary key attribute for ID, combine the data with the sequential ID's using a script, and then populate the table with the new data.

Update: You could also do it by inserting into a new table with values from the old one, like this:

use strict; use warnings; use DBI; # Set up database connection my $user = "content"; my $pass = "content"; my $dbh = DBI->connect("DBI:ODBC:LocalServer",$user, $pass, {RaiseErro +r => 1}); my $new_id = 0; # Assumes the new table request2 has the same layout as the first one. # The ID should be declared as a primary key for this table. # I assume it was not declared that way in table request. my $sth = $dbh->prepare(q{SELECT * FROM request}); # There should be a placeholder for each value in the table. my $sth2 = $dbh->prepare(q{INSERT INTO request2 VALUES(?,?,?)}); my $sql_data = ($sth->execute() || die $sth->errstr); while (my $pointer = $sth->fetchrow_arrayref) { # Assumes the ID field is the first field. $pointer->[0] = $new_id; $sth2->execute(@{$pointer}); $new_id++; }

In summary, it was a bad mistake to define an SQL table without unique keys, and the best way to recover is by getting the data into a new table.


In reply to Re: Increment DB using Perl by tall_man
in thread Increment DB using Perl by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.