Add RETURNING to Delete statement.
Add DELETE statement wiki page.
This commit is contained in:
parent
3d38946eda
commit
5e0e2f2908
10 changed files with 189 additions and 37 deletions
58
wiki/DELETE.md
Normal file
58
wiki/DELETE.md
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
DELETE statement deletes rows that satisfy the WHERE clause from the specified table. More about delete statement
|
||||
in PostgreSQL: https://www.postgresql.org/docs/11/sql-delete.html
|
||||
|
||||
Following clauses are supported:
|
||||
- WHERE(delete_condition) - Only rows for which delete condition returns true will be deleted.
|
||||
- RETURNING(output_expression...) - An expressions to be computed and returned by the DELETE command after each row is deleted.
|
||||
The expression can use any column names of the table. Write _TableName_.AllColumns to return all columns.
|
||||
|
||||
### Example
|
||||
|
||||
```
|
||||
// delete all links with name 'Gmail' and 'Outlook'
|
||||
deleteStmt := Link.
|
||||
DELETE().
|
||||
WHERE(Link.Name.IN(String("Gmail"), String("Outlook")))
|
||||
```
|
||||
|
||||
Debug sql of above statement:
|
||||
|
||||
```sql
|
||||
DELETE FROM test_sample.link -- test_sample is name of the schema
|
||||
WHERE link.name IN ('Gmail', 'Outlook');
|
||||
```
|
||||
|
||||
### Execute statement
|
||||
|
||||
To execute delete statement and get sql.Result:
|
||||
|
||||
```
|
||||
res, err := deleteStmt.Exec(db)
|
||||
```
|
||||
|
||||
To execute delete statement and return records deleted,
|
||||
delete statement has to have RETURNING clause:
|
||||
|
||||
```
|
||||
deleteStmt := Link.
|
||||
DELETE().
|
||||
WHERE(Link.Name.IN(String("Gmail"), String("Outlook"))).
|
||||
RETURNING(Link.AllColumns)
|
||||
|
||||
dest := []model.Link{}
|
||||
|
||||
err := deleteStmt.Query(db, &dest)
|
||||
|
||||
```
|
||||
|
||||
Use `ExecContext` and `QueryContext` to provide context object to execution.
|
||||
|
||||
##### SQL table used for the example:
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS link (
|
||||
id serial PRIMARY KEY,
|
||||
url VARCHAR (255) NOT NULL,
|
||||
name VARCHAR (255) NOT NULL,
|
||||
description VARCHAR (255)
|
||||
);
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue