|
|
1
12
请查看中的ON DUPLICATE KEY语法 http://dev.mysql.com/doc/refman/5.0/en/insert-select.html
|
|
2
7
还有第三种MySQL方式,这是RDBMS中的首选方式
|
|
|
3
4
就我个人而言,我从来不喜欢基于异常的编程(期望在应用程序的正常操作中出现异常),对我来说,第二个示例更具可读性/可维护性。
|
|
|
4
3
如果您希望通过插入Doublete来避免“异常”,并且希望使用标准SQL(并且您的编程语言/数据库返回更新行的计数),那么请使用以下“SQL”-命令(伪代码):
|
|
|
5
2
如果您不关心到非MySQL数据库的可移植性,“ON replicate”听起来不错(行为正是您想要的)。 如果从不删除行,“盲插入”似乎是合理和健壮的。(如果插入案例失败是因为该行存在,那么之后的更新应该会成功,因为该行仍然存在。但是如果删除了行,则此假设为错误-您需要重试逻辑。)在没有“On DUPLICATE”的其他数据库上,如果发现延迟是坏的,可以考虑优化:通过将此逻辑放入存储过程中,可以避免已经存在的情况下的数据库往返。 如果存在并发插入,“检查是否存在”很难正确执行。可以在SELECT和更新之间添加行。事务甚至没有真正的帮助——我认为即使在隔离级别“serializable”,您也会偶尔看到“由于并发更新而无法序列化访问”错误(或者类似于MySQL的错误消息)。您需要重试逻辑,因此我认为上面建议使用此方法避免“基于异常的编程”的人是错误的,因为出于同样的原因,建议首先进行更新的人也是错误的。 |
|
|
6
2
您可以使用REPLACE,或者如果使用更新的MySQL,您可以选择使用“ INSERT ... ON DUPLICATE KEY UPDATE "
|
|
|
7
0
据我所知,第一种方式是首选方式。 |
|
|
8
0
在DAO模型中,可以有一个id字段。
|
|
|
9
0
只要你使用
|
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |