為避免因誤操作導致數據丟失,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)