Я хочу, чтобы добавить новую запись в table1 на SQLite(Perl) Создать запрос для DBI с SQL :: Abstract
use SQL::Abstract;
my %data = (
id => \'max(id)', # it is doesn't work so which variant is right?
record => 'Something'
);
my $sql = SQL::Abstract->new;
my ($stmt, @bind) = $sql->insert('table1', \%data);
...
my $sth = $dbh->prepare($stmt);
Если бы я использовал DBIx :: Class в Catalyst приложение, которое я бы написал так:
id => $c->model('Model')->get_column('id')->max()
и он будет работать нормально. Итак, как я могу достичь той же цели, но используя только SQL :: Abstract, который также используется в DBIx :: Class. Может ли кто-нибудь его исправить? Благодарю.
Это кажется очень неэффективным. Почему бы не сделать автоматическое увеличение столбца или использовать таблицу счетчиков? – Lucas
Это также зависит от условий гонки, если у вас более одного процесса, выполняющего вставки. – cjm
Я просто хочу понять, как использовать этот модуль для создания сложных запросов. – edem