-- 1. Создаем основную таблицу клиентов
CREATE TABLE IF NOT EXISTS clients (
client_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20),
registration_date DATE
) ENGINE=InnoDB;
-- 2. Создаем архивную таблицу
CREATE TABLE IF NOT EXISTS clients_archive (
archive_id INT AUTO_INCREMENT PRIMARY KEY,
original_client_id INT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100),
phone VARCHAR(20),
registration_date DATE,
transfer_date DATETIME
) ENGINE=InnoDB;
-- 3. Удаляем триггер если существует (для пересоздания)
DROP TRIGGER IF EXISTS archive_client_on_delete;
-- 4. Создаем максимально простой триггер
DELIMITER //
CREATE TRIGGER archive_client_on_delete
BEFORE DELETE ON clients
FOR EACH ROW
BEGIN
INSERT INTO clients_archive (
original_client_id,
first_name,
last_name,
email,
phone,
registration_date,
transfer_date
) VALUES (
OLD.client_id,
OLD.first_name,
OLD.last_name,
OLD.email,
OLD.phone,
OLD.registration_date,
NOW()
);
END//
DELIMITER ;
-- 5. Добавляем тестовые данные
INSERT INTO clients (first_name, last_name, email, phone, registration_date) VALUES
('Иван', 'Иванов', 'ivan@example.com', '79161234567', '2023-01-15'),
('Петр', 'Петров', 'petr@example.com', '79159876543', '2023-02-20'),
('Мария', 'Сидорова', 'maria@example.com', '79035432109', '2023-03-10');
-- 6. Тестируем триггер
-- Удаляем клиента (должен попасть в архив)
DELETE FROM clients WHERE client_id = 1;
-- 7. Проверяем результаты
SELECT 'Текущие клиенты:' AS title;
SELECT * FROM clients;
SELECT 'Архивные записи:' AS title;
SELECT * FROM clients_archive;