更新时间:2024-05-16 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,执行结果可能不符合预期。
父主题: DML