Class Delete
- Namespace
- YndigoBlue.Velocity.Model
- Assembly
- YndigoBlue.Velocity.dll
Represents a DELETE statement for removing rows from a database table.
public class Delete
- Inheritance
-
Delete
Examples
Delete with WHERE clause (most common):
using (Manager manager = new Manager(connection))
{
manager.LoadSchema("my_schema");
Schema schema = manager.GetSchema("my_schema");
Table usersTable = schema["users"];
// Delete inactive users
Filter filter = new Filter(
new Criterion<string>(usersTable["status"], "inactive")
);
Delete delete = new Delete(usersTable, filter);
int rowsDeleted = manager.Delete(delete);
Console.WriteLine($"Deleted {rowsDeleted} rows");
}
// SQL: DELETE FROM users WHERE status = 'inactive'
Delete with multiple conditions:
// Delete old inactive accounts
Filter filter = new Filter();
filter.Add(new Criterion<string>(usersTable["status"], "inactive"));
filter.Add(new BooleanItem(BooleanType.And));
filter.Add(new Criterion<DateTime>(
usersTable["last_login"],
ConditionalType.LessThan,
DateTime.UtcNow.AddMonths(-6)
));
Delete delete = new Delete(usersTable, filter);
int rowsDeleted = manager.Delete(delete);
// SQL: DELETE FROM users
// WHERE status = 'inactive' AND last_login < '2024-07-07'
Delete using criterion shorthand:
// Delete single user by ID
Criterion<int> criterion = new Criterion<int>(
usersTable["id"],
ConditionalType.Equals,
12345
);
Delete delete = new Delete(usersTable, criterion);
int rowsDeleted = manager.Delete(delete);
// SQL: DELETE FROM users WHERE id = 12345
Delete with IN clause:
// Delete multiple users by IDs
List<int> userIds = new List<int> { 1, 2, 3, 4, 5 };
Criterion<int> criterion = new Criterion<int>(
usersTable["id"],
ConditionalType.In,
userIds
);
Delete delete = new Delete(usersTable, criterion);
int rowsDeleted = manager.Delete(delete);
// SQL: DELETE FROM users WHERE id IN (1, 2, 3, 4, 5)
Delete within a transaction:
using (Manager manager = new Manager(connection))
{
manager.LoadSchema("my_schema");
Schema schema = manager.GetSchema("my_schema");
manager.BeginTransaction();
try
{
// Delete orders
Delete deleteOrders = new Delete(
schema["orders"],
new Criterion<int>(schema["orders"]["user_id"], 12345)
);
manager.Delete(deleteOrders);
// Delete user
Delete deleteUser = new Delete(
schema["users"],
new Criterion<int>(schema["users"]["id"], 12345)
);
manager.Delete(deleteUser);
manager.CommitTransaction();
}
catch
{
manager.RollbackTransaction();
throw;
}
}
Delete all rows (use with caution):
// WARNING: This deletes ALL rows from the table!
Delete delete = new Delete(usersTable);
int rowsDeleted = manager.Delete(delete);
// SQL: DELETE FROM users
Remarks
Delete operations remove rows from a table based on optional WHERE clause criteria. Always use a WHERE clause unless you intentionally want to delete all rows.
DELETE statements are executed using Engine.Manager.Delete(Delete). The number of affected rows is returned by the Manager.
WARNING: DELETE without a WHERE clause removes ALL rows from the table. Always double-check your WHERE conditions before executing.
Constructors
- Delete(Table)
Creates a new DELETE statement for the specified table without a WHERE clause.
- Delete(Table, IEnumerable<IFilterItem>)
Creates a new DELETE statement with multiple filter items.
- Delete(Table, IFilterItem)
Creates a new DELETE statement with a single filter item.
- Delete(Table, Filter)
Creates a new DELETE statement with a WHERE clause filter.
Properties
- HasWhereClause
Gets whether this DELETE statement has a WHERE clause.
- Table
Gets the table that rows will be deleted from.
- WhereClause
Gets the WHERE clause filter that specifies which rows to delete.
Methods
- AddWhereClause(Filter)
Adds or replaces the WHERE clause filter for this DELETE statement.