DELETE
Delete rows with the Deleter builder.
The Deleter builder constructs DELETE queries. Create one via Table.Delete(db) or dew.Delete[T](db, schema).
Basic delete
err := Users.Delete(db).
Where(Users.ID.Eq(1)).
Exec()
// DELETE FROM users WHERE users.id = $1Multiple conditions
err := Users.Delete(db).
Where(Users.Name.Eq("Alice"), Users.Age.Lt(18)).
Exec()
// DELETE FROM users WHERE users.name = $1 AND users.age < $2Safety: WHERE required
Like UPDATE, Dew refuses to build a DELETE without a WHERE clause:
// This returns an error:
_, _, err := Users.Delete(db).ToSql()
// "dew: UNSAFE DELETE! You must provide a Where clause."
// To delete all rows intentionally:
err := Users.Delete(db).
Where(dew.Raw("1=1")).
Exec()Returning
sql, _, _ := Users.Delete(db).
Where(Users.ID.Eq(1)).
Returning(Users.ID, Users.Name).
ToSql()
// DELETE FROM users WHERE users.id = $1 RETURNING id, nameScan
var id int
var name string
err := Users.Delete(db).
Where(Users.ID.Eq(1)).
Returning(Users.ID, Users.Name).
Scan(ctx, &id, &name)RowsAffected
n, err := Users.Delete(db).
Where(Users.Age.Lt(18)).
RowsAffected()Clone
base := Users.Delete(db).Where(Users.Age.Lt(18))
clone := base.Clone()
clone.Where(Users.Name.Eq("Alice"))
// base is unchangedToSql
sql, args, err := Users.Delete(db).
Where(Users.ID.Eq(1)).
ToSql()