专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » replaceinto:Replace INTO和INSERT INTO的区别的处 »正文

replaceinto:Replace INTO和INSERT INTO的区别的处

来源: 发布时间:星期三, 2009年1月7日 浏览:2次 评论:0
="t18">Replace INTO和INSERT INTO区别: REPLACE运行和INSERT很相似只有点例外假如表中个旧记录和个用于PRIMARY KEY或个UNIQUE索引新记录具有相同则在新记录被插入的前旧记录被删除 注意除非表有个PRIMARY KEY或UNIQUE索引否则使用个REPLACE语句没有意义该语句会和INSERT相同没有索引被用于确定是否新行复制了其它 所有列值均取自在REPLACE语句中被指定所有缺失列被设置为各自默认值这和INSERT您不能从当前行中引用值也不能在新行中使用值如果您使用个例如“SET col_name = col_name + 1”赋值则对位于右侧列名称引用会被作为DEFAULT(col_name)处理因此该赋值相当于SET col_name = DEFAULT(col_name) + 1 为了能够使用REPLACE您必须同时拥有表INSERT和DELETE权限 REPLACE语句会返回个数来指示受影响数目该数是被删除和被插入行数如果对于个单行REPLACE该数为1行被插入同时没有行被删除如果该数大于1则在新行被插入前个或多个旧行被删除如果表包含多个唯索引并且新行复制了在区别索引中区别旧行则有可能是个单行替换了多个旧行 受影响行数可以容易地确定是否REPLACE只添加了或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换) 如果您正在使用C API则可以使用mysql_affected_rows获得受影响行数 目前您不能在个子查询中个表中更换同时从同个表中选择 下文时算法详细介绍说明(此算法也用于LOAD DATA…REPLACE): 1. 尝试把新行插入到表中 2. 当对于主键或唯关键字出现重复关键字而造成插入失败时: a. 从表中删除含有重复关键字值冲突行 b. 再次尝试把新行插入到表中 使用格式如下: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},…),(…),… 或: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name SET col_name={expr | DEFAULT}, … 或: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [(col_name,...)] SELECT …

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: