我觉得这应该很容易......
我有一张这样的表:
CREATE TABLE table_name (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
UNIQUE (name COLLATE NOCASE)
)
没有两个名称相同,不区分大小写。现在我有用户添加名称,它执行此操作:
INSERT INTO table_name (name) VALUES ("my name");
我需要获取行的id,这对于PHP PDO的lastInsertID()来说很容易。但我也想要,如果用户正在添加已经存在于数据库中的名称,则无需添加到数据库中,但仍然可以获取该ID而无需进行其他数据库调用。我希望有像
这样的东西INSERT OR REPLACE INTO table_name (name) VALUES ("my name");
让它只是将相同的数据覆盖到单元格中并返回lastInsertID(即使它没有被插入?)。但这并不奏效。我还有什么其他选择?我是否必须单独进行数据库查询以查看name
字段是否已存在?
答案 0 :(得分:0)
使用OR REPLACE子句,语句始终删除任何旧行。
只需使用两个陈述即可。 (在单一声明中没有技术原因。)