开发限制 DRDS高度兼容 MySQL 协议和语法,但由于分布式数据库和单机数据库存在较大的架构差异,存在SQL使用限制。本文将为您介绍数据库开发过程中的使用限制,作为业务使用参考。 SQL限制 SQL大类限制 不支持用户自定义数据类型、自定义函数。 不支持视图、存储过程、触发器、游标。 不支持BEGIN…END、LOOP…END LOOP、REPEAT…UNTIL…END REPEAT、WHILE…DO…END WHILE等复合语句。 不支类似IF,WHILE等流程控制类语句。 不支持SAVEPOINT操作。 不支持SQL里带schema操作。 不支持跨库关联查询。 小语法限制 DDL 不支持CREATE TABLE tblname LIKE oldtblname。 不支持CREATE TABLE tblname SELECT statement。 不支持使用库名.表名语法。 注意 V5.1.9.6020.2533及以后版本的实例,支持直接连接DRDS实例计算节点时,使用库名.表名语法。 DML 不支持update分片键的值。 不支持SELECT INTO OUTFILE/INTO DUMPFILE/INTO varname。 不支持INSERT DELAYED Syntax。 不支持非WHERE条件的Correlate Subquery。 不支持SQL中带聚合条件的Correlate Subquery。 不支持Global的变更,比如SET GLOBAL varxx或者SET @@global.varxx。 不支持SQL中对于变量的引用和操作,比如SET @c1, @d@c+1; SELECT @c, @d。 数据库管理 SHOW WARNINGS Syntax不支持LIMIT/COUNT的组合。 SHOW ERRORS Syntax不支持LIMIT/COUNT的组合。 SQL语句限制 union约束 使用union关键字的sql,要求其中涉及的分片表的分片规则及配置参数一致,使用union all关键字的sql则无此要求。 分片表不支持union/union all与聚合函数、limit、groupby、having、orderby等关键字联用。 不支持分片表和全局表union。 JDBC约束 不支持rewriteBatchedStatementstrue参数设置(默认为false)。 不支持useServerPrepStmtstrue参数设置(默认为false)。 BLOB, BINARY, VARBINARY字段不能使用setBlob()或setBinaryStream()方法设置参数。 库内分表约束