sub insert {
my ($self) = @_;
my $data = $self->{data};
my $keys = join(', ', keys $data);
my $values = join(', ', map qq('$_'), values $data);
my $sql = "INSERT INTO tbl ($keys) VALUES ($values);";
my $sth = $self->{dbh}->prepare($sql);
$sth->execute();
}
我有一個方法將hash ref的內容插入到一個表sqlite數據庫中。我想知道是否有一個簡單的方法來添加一列到表中,如果散列鍵不是列。顯然,如果其中一個鍵不是列名,插入將失敗。我可以利用這種失敗,添加缺失的列,並重新插入。或者每次我想插入數據庫時,是否必須檢查所有列的所有列? (所有按鍵都TEXT值)SQLite:如果它們不存在,立即添加列
問題的ALTER語句爲每個鍵。如果列已經存在,它會失敗,否則它會創建列。 – ikegami
捕捉失敗(使用'eval'或類似Try :: Tiny的東西)並插入列也會起作用。 – simbabque
@ikegami - 爲每一個列執行修改,每一次我想要插入的代碼都會非常昂貴 – Takkun