Методы реализации каскадного удаления в SQL с примерами кода

  1. Использование параметра CASCADE в ограничениях FOREIGN KEY:

    CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    OrderDate DATE,
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE
    );

    В этом примере, когда клиент удаляется из таблицы «Клиенты», все соответствующие заказы в таблице «Заказы» с соответствующим идентификатором CustomerID будут автоматически удалены.

  2. Использование триггеров:

    CREATE TRIGGER cascade_delete
    BEFORE DELETE ON Customers
    FOR EACH ROW
    BEGIN
    DELETE FROM Orders WHERE CustomerID = OLD.CustomerID;
    END;

    При использовании этого триггера, когда клиент удаляется из таблицы «Клиенты», триггер автоматически удаляет все соответствующие заказы из таблицы «Заказы».

  3. Использование хранимых процедур:

    CREATE PROCEDURE DeleteCustomer(IN customerID INT)
    BEGIN
    DELETE FROM Customers WHERE CustomerID = customerID;
    DELETE FROM Orders WHERE CustomerID = customerID;
    END;

    Вызов хранимой процедуры «DeleteCustomer» с определенным идентификатором клиента приведет к удалению соответствующего клиента и всех связанных с ним заказов.

  4. Использование логики приложения:

    DELETE FROM Customers WHERE CustomerID = 1;
    DELETE FROM Orders WHERE CustomerID = 1;

    В этом методе вы можете вручную удалить клиента и связанные с ним заказы, используя отдельные операторы SQL в коде вашего приложения.