0

我已经实现了存储在SQLite数据库中的简单缓存。对于一个客户,数据库中有一张表。如果它不存在,我想自动创建这个表。有什么更好的解决方案,使用 query: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您只发送一个查询,尽管其中定义了表结构,但如果您的表结构不难生成或预定义,那么每次使用create table.

它还取决于您的表不存在的可能性有多大。如果这不太可能并且您只是希望您的应用程序安全且自我维护,您可以假设它们存在并在假设它们存在的查询失败时处理异常以创建表。

于 2012-11-23T14:16:18.527 回答