我有一个包含多个组合框和文本框的长格式。
我正在使用此表单进行注册,我也使用相同的表单进行更新。
INSERT
查询完成了注册过程。UPDATE
)记录,然后再将其重新插入数据库,而不是使用DELETE
查询,因为我之前已经完成了插入过程注册,我可以重用代码。这种方法有什么问题吗?
答案 0 :(得分:2)
有些情况(特别是在批量数据移动工作等),这样做可能有意义。
但是在你的情景中,我真的没有理由为什么你应该按照你的意思行事。
除了为您节省的开发时间可以忽略不计之外,我从您的方法中看不出任何好处。在缺点上,每当用户数据更新时,您的应用程序将执行2个SQL语句(DELETE + INSERT)而不是1个UPDATE。根据应用程序的工作方式,您还需要一些其他逻辑来跟踪用户配置文件的更改,因为像dtCreated等这样的东西是不够的。
我只想使用简单的UPDATE语句。
答案 1 :(得分:1)
您可以使用使用相同语法的REPLACE INTO
命令。在屏幕后面,它将执行DELETE
然后INSERT
。如果您使用InnoDB
表并且已经建立了关系,那么如果您认为REPLACE INTO
将像UPDATE
一样工作,那么这将非常危险。结果,由于级联规则导致已删除的行。
您考虑使用DELETE
后跟INSERT
进行更新,因为您已准备好insert-sql。那么你可以使用UPDATE
类似的语法进行插入。这样就可以根据你的任务使用INSERT / UPDATE了。
所以而不是:
INSERT INTO products (name) VALUES ('iPhone');
..你会用:
INSERT INTO products SET name='iPhone';
与更新看起来非常相似:
UPDATE products SET name='iPhone' WHERE id=1;
几乎一样。