给定 SQLite 中的下表:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR NOT NULL,
hair_color VARCHAR NOT NULL DEFAULT 'Green'
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行批量插入,hair_color仅对某些行使用默认值。例如,在 PostgreSQL 或 MySQL 中,它可能如下所示:
INSERT INTO users (name, hair_color) VALUES
('Sean', 'Black'),
('Tess', DEFAULT)
Run Code Online (Sandbox Code Playgroud)
但是,SQLite 不提供DEFAULT除 之外的任何其他上下文中的关键字DEFAULT VALUES。我知道我可以通过两个查询来完成此操作
INSERT INTO users (name, hair_color) VALUES ('Sean', 'Black');
INSERT INTO users (name) VALUES ('Tess');
Run Code Online (Sandbox Code Playgroud)
但是,我无法想象 SQLite 不提供某种机制来在单个查询中执行此操作。DEFAULTSQLite 其他后端的关键字是否有等效项?
SQLite是一个嵌入式数据库,没有客户端/服务器通信开销,因此数据库本身没有技术原因避免使用多个语句。
可以(为每个表)创建一个触发器,用默认值替换特殊值。但是,如果不知道表定义的详细信息,这是不可能的,并且使用单个语句可以插入的行数无论如何都是有限的,因此最简单的解决方案是每行使用一个 INSERT。
| 归档时间: |
|
| 查看次数: |
3203 次 |
| 最近记录: |