誤操作によるデータ損失を防ぐため、PolarDB-X 1.0は、WHEREまたはLIMIT句のないDELETEステートメントやWHEREまたはLIMIT句のないUPDATEステートメントなど、リスクの高いSQLステートメントをデフォルトで禁止しています。 フルテーブルの削除または更新を実行する必要がある場合は、対応するステートメントにヒントを追加することで、上記の保護をスキップできます。
ステートメント
UPDATEステートメントまたはDELETEステートメントに次のヒントを追加して、フルテーブルの削除または更新を実行できます。
/! TDDL:FORBID_EXECUTE_DML_ALL=false */
例
- DELETEステートメントにWHERE句またはLIMIT句が含まれていない場合、このステートメントの実行は阻止され、次のエラーメッセージが表示されます
。ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute ALLまたはUPDATE ALL sql. 詳細: [http:// example.aliyundoc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]
次のヒントがステートメントに追加された後、操作は成功します。/!TDDL:FORBID_EXECUTE_DML_ALL=false */DELETE FROM tt; クエリOK、影響を受ける10行 (0.21秒)
- UPDATEステートメントにWHERE句またはLIMIT句が含まれていない場合、このステートメントの実行が阻止され、次のエラーメッセージが表示されます
。UPDATE tt SET id = 1; ERR-CODE: [TDDL-4620][ERR_FORBID_EXECUTE_DML_ALL] Forbid execute ALLまたはUPDATE ALL sql. もっと: [http://example.aliyundoc.com/faq/faqByFaqCode.html?faqCode=TDDL-4620]
次のヒントがステートメントに追加された後、操作は成功します。/!TDDL:FORBID_EXECUTE_DML_ALL=false */UPDATE tt SET id = 1; クエリOK、影響を受ける10行 (0.21秒)