UPDATE items SET name = 'haha' WHERE id = '12'
我很好奇如果where条件失败,update也会插入值。我读过w3schools,只更新数据库中的现有数据,但在我的脚本中,它会自动插入包含数据的行。我想知道它是否可能是脚本中的错误,或者是UPDATE如何在mysql上运行。
答案 0 :(得分:13)
没有。如果在您的示例中,数据库中没有id = 12的条目,则查询将返回“no rows affected”。更新永远不会在MySQL中创建新条目。
编辑:虽然更新不会创建新条目,但它可能包括在数据库模式中设置的默认/自动值(例如,当前时间戳)。
答案 1 :(得分:4)
NO。如果表中不存在值,则Update不会插入值。请检查脚本是否检查更新的状态,并再次调用DB来插入数据。
答案 2 :(得分:1)
您的SQL应该执行以下操作 -
通过将名称设置为“haha”
来更新项目表中ID为12的所有记录如果记录不存在,更新将不会插入记录,它只会更新表中的现有记录。
答案 3 :(得分:0)
简短回答:不。
长答案:如果您的专栏不存在,您将收到错误消息。如果您的where条件列不存在,您也会收到错误。如果您的where条件值不存在,则不执行任何操作。
答案 4 :(得分:0)
我使用临时表来查看数据更新条件,您可以参考
UPDATE table1
SET
column1 = 'things'
WHERE
IDcolumn = 'id' AND
(NOT EXISTS (SELECT * FROM (SELECT * FROM table1) AS temp WHERE temp.column1 = N'things'))