阅读(385) (15)

Mycat2 Sql兼容性 insert

2021-09-08 11:46:16 更新

insert兼容性

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

检查项

last_insert_id在自增主键的情况下能在报文中正确返回id和在sql中使用last_insert_id()函数可以查询id变量

单表

只会把SQL转发对应节点

全局表

sql往配置的(多个)dataNode下发

分片表

  1. 带有分片字段的sql发往对应的dataNode
  2. 不带分片字段则往(多个)dataNode下发

在分片表下

  1. 不支持分片键使用函数运算,也不能是子查询
  2. 不支持 PARTITION 语法
  3. 注意如果带有子查询,该子查询不能查询物理表中不存在的表

不支持分片键的分片键带有默认值约束,分片值必须显式指定,对于全局二级索引的分片键也是如此

对于时间类型,请使用字符串表达,例如

INSERT INTO `travelrecord2`(`id`,`user_id`,`traveldate`,`fee`,`days`,`blob`)
VALUES 
(6,2,'2021-02-22 18:34:05.983692',4.5,4,NULL),
(7,2,'2021-02-22 18:34:05.983692',4.5,4,NULL),
(8,2,'2021-02-22 18:34:05.983692',4.5,4,NULL);