更新时间:2022-02-22 GMT+08:00

SQL语法使用限制

DDM高度兼容MySQL协议和语法,但由于分布式数据库和单机数据库在架构上存在较大的差异,对SQL使用存在一些限制。

由于分布式事务的特性,对于增、删、改数据表等批量SQL操作,需要设置手动提交事务,以确保数据记录改动的准确无误。

例如客户端在批量操作SQL语句时,可进行如下设置:

set autocommit=0;

{sql operations};

commit;

当前版本仅支持在SQL语句中对当前连接库进行操作,不支持在SQL语句中对其他连接库进行操作,否则会导致异常结果。

表1 DDL的语法限制

DDL语法

限制条件

DDL语法

  • ALTER命令不支持修改数据库和拆分键字段。
  • 不支持创建TEMPORARY类型的拆分表、广播表。
  • 不支持从另一张表创建新的拆分表、广播表。
  • 仅单表支持外键,拆分表和广播表不支持外键。
  • 支持从另一张单表或广播表创建新的单表,但不支持从另一张拆分表创建新的单表。
  • CREATE TABLE Syntax和DROP TABLE Syntax不支持注解,且不受参数sql_execute_timeout的限制。
表2 DML的语法限制

DML语法

限制条件

DELETE语句

  • 不支持PARTITION子句。
  • 不支持子查询。

UPDATE语句

  • 不支持PARTITION子句。
  • 不支持子查询。
表3 数据库管理语句的限制

数据库管理语句

限制条件

数据库管理语句

  • 不支持SET Syntax修改全局变量。
  • 不支持SHOW TRIGGERS语法。
表4 SQL高级功能的限制

SQL高级功能

限制条件

SQL高级功能

  • 暂不支持用户自定义数据类型、自定义函数。
  • 暂不支持视图、存储过程、触发器、游标。
  • 暂不支持 BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE 等复合语句。
  • 暂不支类似 IF ,WHILE 等流程控制类语句。