為避免因誤操作導致數據丟失,PolarDB-X 1.0默認禁止執行高危類SQL,例如全表刪除(即不帶WHERE或LIMIT條件的DELETE語句)和全表更新(即不帶WHERE或LIMIT條件的UPDATE語句)等語句。但您也可以通過HINT語句避開上述自動保護,強制執行全表刪除或更新操作。

語句

您可以在UPDATE或DELETE語句中加上如下HINT執行全表刪除或更新:

HINT:/!TDDL:FORBID_EXECUTE_DML_ALL=false*/

示例

  • 若DELETE語句中未加任何WHERE或LIMIT條件,執行時會被攔截且出現如下錯誤提示:
    mysql> delete from tt;
    ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute DELETE ALL or UPDATE ALL sql. More: [http://
    example.aliyundoc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]
    在上述語句中加上如下HINT則可成功執行:
    mysql> /!TDDL:FORBID_EXECUTE_DML_ALL=false*/delete from tt;
    Query OK, 10 row affected (0.21 sec)
  • 若UPDATE語句中未加任何WHERE或LIMIT條件,執行時會被攔截且出現如下錯誤提示:
    mysql> update tt set id = 1;
    ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute DELETE ALL or UPDATE ALL sql. More: [http://example.aliyundoc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]
    在上述語句中加上如下HINT則可成功執行:
    mysql> /!TDDL:FORBID_EXECUTE_DML_ALL=false*/update tt set id = 1;
    Query OK, 10 row affected (0.21 sec)