DRDS高度兼容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。