Represent a DELETE construct. The :class:`_expression.Delete` object is created using the :func:`_expression.delete()` function. Available extension points: * ``post_criteria``: applies additional logic after the ``WHERE`` clause.
| 1840 | |
| 1841 | |
| 1842 | class Delete( |
| 1843 | DMLWhereBase, UpdateBase, HasSyntaxExtensions[Literal["post_criteria"]] |
| 1844 | ): |
| 1845 | """Represent a DELETE construct. |
| 1846 | |
| 1847 | The :class:`_expression.Delete` object is created using the |
| 1848 | :func:`_expression.delete()` function. |
| 1849 | |
| 1850 | Available extension points: |
| 1851 | |
| 1852 | * ``post_criteria``: applies additional logic after the ``WHERE`` clause. |
| 1853 | |
| 1854 | """ |
| 1855 | |
| 1856 | __visit_name__ = "delete" |
| 1857 | |
| 1858 | is_delete = True |
| 1859 | |
| 1860 | _traverse_internals = ( |
| 1861 | [ |
| 1862 | ("table", InternalTraversal.dp_clauseelement), |
| 1863 | ("_extra_froms", InternalTraversal.dp_clauseelement_tuple), |
| 1864 | ("_where_criteria", InternalTraversal.dp_clauseelement_tuple), |
| 1865 | ("_returning", InternalTraversal.dp_clauseelement_tuple), |
| 1866 | ("_hints", InternalTraversal.dp_table_hint_list), |
| 1867 | ("_post_criteria_clause", InternalTraversal.dp_clauseelement), |
| 1868 | ] |
| 1869 | + HasPrefixes._has_prefixes_traverse_internals |
| 1870 | + DialectKWArgs._dialect_kwargs_traverse_internals |
| 1871 | + ExecutableStatement._executable_traverse_internals |
| 1872 | + HasCTE._has_ctes_traverse_internals |
| 1873 | ) |
| 1874 | |
| 1875 | _position_map = util.immutabledict( |
| 1876 | {"post_criteria": "_post_criteria_clause"} |
| 1877 | ) |
| 1878 | |
| 1879 | _extra_froms: Tuple[FromClause, ...] = () |
| 1880 | |
| 1881 | def __init__(self, table: _DMLTableArgument): |
| 1882 | self.table = coercions.expect( |
| 1883 | roles.DMLTableRole, table, apply_propagate_attrs=self |
| 1884 | ) |
| 1885 | |
| 1886 | @_generative |
| 1887 | def using(self, *froms: _FromClauseArgument) -> Self: |
| 1888 | r"""Add one or more explicit ``USING`` expressions to this DELETE. |
| 1889 | |
| 1890 | This method may be used for backend-specific multiple-table DELETE |
| 1891 | forms where the secondary FROM expression needs to be stated |
| 1892 | explicitly, such as MySQL's ``DELETE FROM table USING <join>`` form. |
| 1893 | |
| 1894 | .. versionadded:: 2.1 |
| 1895 | |
| 1896 | .. seealso:: |
| 1897 | |
| 1898 | :ref:`tutorial_multi_table_deletes` |
| 1899 |