开发者社区> 问答> 正文

什么是INSERT 语句



标准语法INSERT [IGNORE] [INTO] table_name (column_name [, ...]) VALUES (insert_expr_list) [, insert_expr_list [, ...]] [on duplicate key update  column_name = expr [, ...]]
insert_expr_list:
    insert_expr [, ...]





限制说明


  • 允许 insert 多个值,且这些值可以在任意多个分区;

  • 当前不支持分布式事务,如果一次 insert 多个行,且这些行不在同一个分区,那么数据库会开启一个不完整的分布式事务,在部分分区提交成功部分分区提交失败时,可能导致回滚不一致,用户应慎用或不用;

  • 若用户的表包含自增主键,则 insert 时该列的生成规则需遵守自增主键的使用方法,自增主键会产生唯一值,但该值不一定单调递增,也不一定连续;

  • insert_expr 列内容前不得附带字符集等前缀描述,如:_utf8’a’,是不支持的。

  • 对于分区键,用户必须自行保证分区键的列定义,与用户 insert 时填入的列值的个数是匹配的,若用户建表时列定义为整型,而 insert 时为浮点型或字符串型,则会因数据类型截断,导致数据分布紊乱;

  • on duplicate update 从句的特性类似于 replace,无法保证非分区字段的唯一性,语法上虽未禁止,但不建议用户使用,使用者请自行保证唯一性;
  • 不支持 insert select 从句。

展开
收起
云栖大讲堂 2017-10-31 17:20:03 1683 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载