Автоматическое обновление данных с помощью триггеров AFTER INSERT в MySQL

Автоматическое обновление данных с помощью триггеров AFTER INSERT в MySQL

Автоматическое обновление данных с помощью триггеров AFTER INSERT в MySQL

Здравствуйте. В сегодняшней статье мы рассмотрим как обновлять данные в таблице при помощи триггеров.

Триггеры (triggers) в базах данных (БД) представляют собой специальные программы,
которые автоматически выполняются при определенных событиях в таблицах БД.
Эти события могут быть связаны с изменением данных в таблице, удалением или добавлением
записей.
Один из наиболее распространенных типов триггеров — триггеры после вставки. Они
выполняются после того, как новая запись была добавлена в таблицу. Триггеры после
вставки могут выполнять различные задачи, такие как вставка данных в другую таблицу,
обновление данных в текущей таблице или выполнение других операций, зависящих от
содержимого новой записи.
Рассмотрим пример использования триггеров после вставки. Предположим, что у нас есть
две таблицы в нашей БД: orders (заказы) и customers (клиенты). Когда новый заказ
добавляется в таблицу orders, нам нужно также обновить данные о клиенте в таблице
customers. Для этого мы можем создать триггер после вставки в таблицу orders,
который будет автоматически обновлять данные в таблице customers при каждой новой
записи в таблице orders.

Создание таблиц



CREATE TABLE Customers (

  customer_id INT PRIMARY KEY,

  first_name VARCHAR(50),

  last_name VARCHAR(50),

  email VARCHAR(100),

  phone VARCHAR(20),

  address VARCHAR(200)

);









CREATE TABLE Orders (

  order_id INT PRIMARY KEY,

  customer_id INT,

  order_date DATETIME,

  order_total DECIMAL(10,2),

  order_status VARCHAR(20),

  FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)

);



Вставка данных



INSERT INTO Customers (customer_id, first_name, last_name, email, phone, address)

VALUES 

  (1, 'Иван', 'Иванов', '[email protected]', '555-1234', 'ул. Пушкина, д.10, кв.5'),

  (2, 'Петр', 'Петров', '[email protected]', '555-5678', 'ул. Лермонтова, д.20, кв.30'),

  (3, 'Анна', 'Сидорова', '[email protected]', '555-9012', 'ул. Толстого, д.15, кв.25');









INSERT INTO Orders (order_id, customer_id, order_date, order_total, order_status)

VALUES

  (1, 1, '2022-05-10 14:30:00', 100.00, 'в обработке'),

  (2, 1, '2022-05-11 09:45:00', 50.00, 'в обработке'),

  (3, 2, '2022-05-10 11:15:00', 75.00, 'отправлен'),

  (4, 3, '2022-05-09 17:00:00', 200.00, 'доставлен');





Создание триггера



CREATE TRIGGER update_customer_info 

AFTER INSERT ON orders 

FOR EACH ROW 

BEGIN 

  UPDATE Сustomers 

  SET last_order_date = NEW.order_date 

  WHERE customer_id = NEW.customer_id;

END;





Таким образом, дата в таблице Customers должна обновиться при вставке данных в
таблицу orders.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий