我正在尝试遵循以下blog并使用UPDATE,IF,INSERT INTO语句,看到它不会超过我的数据两次。
请注意它适用于php。
我的陈述如下
$query = "UPDATE
" . $this->table_name2 . "
SET
batch = :batch,
created = :created
WHERE
id = :id
IF row_count() = 0
INSERT INTO " . $this->table_name2 . "
SET
id=:id,
batch=:batch,
created=:created";
但是我的返回值总是回归假,我不知道问题出在哪里。
如果我尝试声明的前半部分,它会更新信息:
$query = "UPDATE
" . $this->table_name2 . "
SET
batch = :batch,
created = :created
WHERE
id = :id
如果我尝试声明的后半部分,它会记录信息:
INSERT INTO " . $this->table_name2 . "
SET
id=:id,
batch=:batch,
created=:created";
到目前为止,我在找到任何搜索后都没有找到任何帮助,我觉得我的IF语句可能不正确,但我甚至没有得到关于文档中IF row_count() = 0
的信息。
答案 0 :(得分:1)
IF语句仅在存储过程中可用。
如果id
是主键(或唯一),那么这对您有用:
INSERT INTO " . $this->table_name2 . "
SET
id = :id,
batch = :batch,
created = :created
ON DUPLICATE KEY UPDATE
batch = :batch,
created = :created
这将仅执行INSERT语句,ID尚未退出。如果它已经存在,它将执行UPDATE部分。