mysql UPDATE是否插入值,如果它不存在?

时间:2011-10-27 10:57:39

标签: mysql

UPDATE items SET name = 'haha' WHERE id = '12'

我很好奇如果where条件失败,update也会插入值。我读过w3schools,只更新数据库中的现有数据,但在我的脚本中,它会自动插入包含数据的行。我想知道它是否可能是脚本中的错误,或者是UPDATE如何在mysql上运行。

5 个答案:

答案 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'))