DELETE
DELETE removes values stored in user-created tables.
Syntax
DELETE FROM <table_name> [AS <alias>]
[USING <from_item> [, ...]]
[WHERE <condition>]
;
| Syntax element | Description |
|---|---|
<table_name> |
The table whose values you want to remove. |
AS <alias> |
Optional. The alias for the table. If specified, only permit references to <table_name> as <alias>. |
| USING from_item | Optional. Table expressions whose columns you want to reference in the WHERE clause. This supports the same syntax as the FROM clause in SELECT statements, e.g. supporting aliases. |
WHERE <condition> |
Optional. Only remove rows which evaluate to true for condition. |
Details
Known limitations
DELETEcannot be used inside transactions.DELETEcan reference read-write tables but not sources or read-only tables.- Low performance. While processing a
DELETEstatement, Materialize cannot process otherINSERT,UPDATE, orDELETEstatements.
Examples
CREATE TABLE delete_me (a int, b text);
INSERT INTO delete_me
VALUES
(1, 'hello'),
(2, 'goodbye'),
(3, 'ok');
DELETE FROM delete_me WHERE b = 'hello';
SELECT * FROM delete_me ORDER BY a;
a | b
---+---------
2 | goodbye
3 | ok
CREATE TABLE delete_using (b text);
INSERT INTO delete_using VALUES ('goodbye'), ('ciao');
DELETE FROM delete_me
USING delete_using
WHERE delete_me.b = delete_using.b;
SELECT * FROM delete_me;
a | b
---+----
3 | ok
DELETE FROM delete_me;
SELECT * FROM delete_me;
a | b
---+---
Privileges
The privileges required to execute this statement are:
USAGEprivileges on the schemas that all relations and types in the query are contained in.DELETEprivileges ontable_name.SELECTprivileges on all relations in the query.- NOTE: if any item is a view, then the view owner must also have the necessary privileges to execute the view definition. Even if the view owner is a superuser, they still must explicitly be granted the necessary privileges.
USAGEprivileges on all types used in the query.USAGEprivileges on the active cluster.