PolarDB-X高度兼容MySQL协议和语法,但由于分布式数据库和单机数据库存在较大的架构差异,存在SQL使用限制。本文将介绍相关SQL的使用限制。
SQL大类限制
- 暂不支持自定义数据类型或自定义函数。
- 暂不支持存储过程、触发器、游标。
- 暂不支持临时表。
- 暂不支持BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE等复合语句。
- 暂不支流程控制类语句(如IF或WHILE等)。
小语法限制
- DDL
CREATE TABLE tbl_name LIKE old_tbl_name
不支持拆分表。CREATE TABLE tbl_name SELECT statement
不支持拆分表。- 暂不支持同时RENAME多表。
- 暂不支持ALTER TABLE修改拆分字段。
- 暂不支持跨Schema的DDL(例如
CREATE TABLE db_name.tbl_name (... )
)。
- 更多关于DDL的信息,请参见DDL。
- DML
- 暂不支持SELECT INTO OUTFILE、INTO DUMPFILE和INTO var_name。
- 暂不支持STRAIGHT_JOIN和NATURAL JOIN。
- 暂不支持在 UPDATE SET 子句中使用子查询。
- 暂不支持INSERT DELAYED语法。
- 暂不支持SQL中对于变量的引用和操作(例如
SET @c=1, @d=@c+1; SELECT @c, @d
)。 - 暂不支持在柔性事务中对广播表进行INSERT、REPLACE、UPDATE或DELETE操作。
- 更多关于DML的信息,请参见DML。
- 子查询
- 不支持HAVING子句中的子查询,JOIN ON条件中的子查询。
- 等号操作行符的标量子查询(The Subquery as Scalar Operand)不支持ROW语法。
- 更多关于子查询的信息,请参见子查询。
- 数据库管理
- SHOW WARNINGS语法不支持LIMIT和COUNT的组合。
- SHOW ERRORS语法不支持LIMIT和COUNT的组合。
- 运算符暂不支持
‘:=’
赋值运算符。
更多关于运算符的信息,请参见运算符简介。 - 函数
- 更多关于函数的信息,请参见函数简介。
- 关键字
- 暂不支持MILLISECOND。
- 暂不支持MICROSECOND。