全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
分布式关系型数据库 DRDS

高危类 SQL 自动保护

更新时间:2017-11-03 14:19:57

为了防止误操作,DRDS 默认禁止全表删除和全表更新的操作。

下列语句默认会被禁止:

  1. DELETE 语句不带 WHERE 条件或者 LIMIT 条件;
  2. UPDATE 语句不带 WHERE 条件或者 LIMIT 条件。

如果确实需要执行这类操作,可以通过 HINT 来临时跳过这个限制:HINT:/!TDDL:FORBID_EXECUTE_DML_ALL=false*/

示例

  1. 执行全表删除默认会被拦截:

    1. mysql> delete from tt;
    2. ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute DELETE ALL or UPDATE ALL sql. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]

    加 HINT 则可执行成功:

    1. mysql> /!TDDL:FORBID_EXECUTE_DML_ALL=false*/delete from tt;
    2. Query OK, 10 row affected (0.21 sec)
  2. 执行全表更新默认会被拦截:

    1. mysql> update tt set id = 1;
    2. ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute DELETE ALL or UPDATE ALL sql. More: [http://middleware.alibaba-inc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]

    加 HINT 则可执行成功:

    1. mysql> /!TDDL:FORBID_EXECUTE_DML_ALL=false*/update tt set id = 1;
    2. Query OK, 10 row affected (0.21 sec)
  3. DELETE 或者 UPDATE 语句中带有 WHERE 或者 LIMIT 条件,不会出现这个限制。

    1. mysql> delete from tt where id = 1;
    2. Query OK, 1 row affected (0.21 sec)
本文导读目录