Trong trường hợp cụ thể này, một dãy số là giải pháp phù hợp như đã đề cập. Nhưng nếu trong một số trường hợp trong tương lai, bạn cần cả cập nhật thứ gì đó và trả về một giá trị trong cùng một câu lệnh, bạn có thể sử dụng RETURNING
mệnh đề:
UPDATE atable SET foo = do_something_with(foo) RETURNING foo INTO ?
Nếu mã gọi là PL / SQL, hãy thay thế? với một biến PL / SQL cục bộ; nếu không, bạn có thể ràng buộc nó như một tham số đầu ra trong chương trình của mình.
Chỉnh sửa:Vì bạn đã đề cập đến Perl, một cái gì đó như thế này sẽ hoạt động (chưa được kiểm tra):
my $sth = $dbh->prepare('UPDATE mytable SET idnext = idnext + 1 returning idnext into ?');
my $idnext;
$sth->bind_param_inout(1, \$idnext, 8);
$sth->execute; # now $idnext should contain the value
Xem DBI .