sqlite, получить поле из обновленного - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть база данных sqlite с табличным тестом.Несколько процессов обращаются к этой базе данных из bash.В таблице есть следующие поля:

CREATE TABLE mytable (id NUMERIC,
start JULIAN,
finish JULIAN)

Я получаю уникальный идентификатор по:

id=$(sqlite test.db <<EOF
BEGIN EXCLUSIVE;
SELECT id FROM mytable WHERE start IS NULL ORDER BY RANDOM() LIMIT 1;
COMMIT;
EOF
)

Мой вопрос: как обновить поле, начинающееся с:

UPDATE mytable set start=julianday('now') where id="SELECTED ID FROM ABOVE";

В том же заявлении?

1 Ответ

1 голос
/ 07 апреля 2011

Исходя из комментариев, которые вы предоставили выше, моё решение будет выглядеть примерно так (в perl с необработанным DBI-соединением я также не делал много проверок на ошибки или чего-либо еще, что-то, что вы, вероятно, должны сделать):

my $dbh = DBI->connect(...);
$dbh->do("BEGIN EXCLUSIVE");
my $stm = $dbh->prepare("SELECT id FROM mytable WHERE start IS NULL ORDER BY RANDOM() LIMIT 1");
$stm->execute();
my $row = $stm->fetchrow_hashref();
my $id = undef;
if ( $row ) {
    $id = $row->{ID};
    my $ustm = $dbh->prepare("UPDATE mytable set start=julianday('now') where id=?");
    $ustm->execute($id);
}
$dbh->do("COMMIT");
# Still have the id at this point.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...