There are a couple of problems here.
The basic problem is that this only tells you what the last ID in the table was (+1), not what the next ID will be. If I insert a record and then delete it, that ID will not be reused, but your solution assumes it will. The next ID will actually be the highest +2. I could do this with any number of records.
The other problem is in your second solution:
my $data = qq(SELECT id FROM table ORDER BY id DESC); # +1
This selects every row in the table. You really want to select only one:
my $data = qq(SELECT id FROM table ORDER BY id DESC LIMIT 1); # +1
...but this still suffers from the first problem. |