0

SQLiteデータベースに保存された単純なキャッシュを実装しました。1 つのクライアントに対して、データベースに 1 つのテーブルがあります。このテーブルが存在しない場合は、自動的に作成したいと考えています。SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';クエリを使用してテーブルが存在するかどうかを確認する、またはを使用して、より良い解決策は何CREATE TABLE IF NOT EXISTS table_name (...)ですか? キャッシュが必要になるたびにこれを行わなければならないので、どちらの方法がより効率的でより正確になるのだろうか。

私は を使用してPDOいるので、これを行うためのより賢い方法があるのではないでしょうか?

解決策:PDO::errorCodeテーブルが存在しないかどうかを調べるために 使用します。

4

1 に答える 1

4

create table if not existsいつか必要になった場合に他のデータベースと互換性があるので、私はそれを使います(特にsqliteの場合、切り替えることはまずありませんが、それでも)。

またsqlite_master、テーブルを確認して見つからない場合は、別のクエリを送信して作成する必要があります。create tableテーブル構造が定義されていますが、クエリを 1 つしか送信していませんが、テーブル構造を生成するのが難しくないか、事前定義されている場合は、create table.

また、テーブルが存在しない可能性にも依存します。その可能性は高くなく、アプリを安全で自己維持型にしたいだけの場合は、それらが存在すると仮定し、例外を処理して、存在すると仮定したクエリが失敗したときにテーブルを作成することができます。

于 2012-11-23T14:16:18.527 に答える