Table of Contents

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.