更新时间:2024-07-30 GMT+08:00

INSERT

INSERT是将数据插入到数据库对象中的指令。

常用语法

INSERT [INTO] tbl_name
[(col_name,...)]
{VALUES | VALUE} ({expr },...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
OR
INSERT [INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE
col_name=expr [, col_name=expr] ... ]

语法限制

  • 不支持INSERT DELAYED...。
  • 不支持不包含拆分字段的INSERT。
  • 暂不支持PARTITION 语法,建议不要使用partition表。
  • INSERT操作不支持datetime(YYYY-MM-DD HH:MM:SS)中“YYYY”取值1582年及之前年份。
  • INSERT操作不支持插入拆分键值为DEFAULT关键字。
  • 拆分表执行INSERT操作时如果指定了自增值,只影响该插入数据的自增值。后续数据插入时如果不指定自增值,仍以原自增值为基础进行自增。
  • 不支持在VALUES中调用REPEAT函数时引用表中的列作为参数。

    例如:

    INSERT INTO T(NAME) VALUES(REPEAT(ID,3));
  • 使用INSERT DUPLICATE...更新拆分键时仅支持常量,不支持VALUES、LAST_INSERT_ID等函数或运算表达式。
  • 不支持INSERT DUPLICATE语句更新含GSI的拆分表。

使用限制

  • 如果INSERT语句中拆分键的值是非法的,数据默认会路由到0号分库或者0号分表。
  • 不建议在INSERT语句中使用VERSION、DATABASE、USER函数,此类函数结果受语句是否下推至DN节点执行影响,执行结果可能不符合预期。
  • 不建议INSERT DUPLICATE语句更新拆分键,此类方法直接下推DN,执行结果可能不符合预期。