41 lines
1.6 KiB
SQL
41 lines
1.6 KiB
SQL
-- Добавляем столбец area_price в complex_rooms
|
||
|
||
|
||
ALTER TABLE complex_rooms ADD COLUMN area_price DECIMAL(12,2) DEFAULT NULL;
|
||
|
||
|
||
|
||
-- Обновляем все существующие квартиры( для всех устанавливаем area_price считая total_amount / area)
|
||
|
||
UPDATE complex_rooms
|
||
SET area_price = total_amount / area
|
||
WHERE (area_price IS NULL OR area_price = 0)
|
||
AND area > 0;
|
||
|
||
|
||
-- Создание триггера, который при добавлении в базу новой записи complex_rooms будет автоматически считать
|
||
-- цену за квадратный метр area_price
|
||
-- Для этого в таблице complex_rooms создаем новый триггер где
|
||
-- Name calculate_area_price_before_insert
|
||
-- Время before
|
||
-- Собитые Insert
|
||
-- а определение SQL внизу
|
||
|
||
IF NEW.area IS NOT NULL AND NEW.total_amount IS NOT NULL AND NEW.area > 0 THEN
|
||
SET NEW.area_price = NEW.total_amount / NEW.area;
|
||
ELSE
|
||
SET NEW.area_price = NULL;
|
||
END IF;
|
||
|
||
--Обновление цени area_price при изменение в total_amount или area
|
||
-- Для этого в таблице complex_rooms создаем новый триггер где
|
||
-- Name calculate_area_price_before_update
|
||
-- Время before
|
||
-- Собитые update
|
||
-- а определение SQL внизу
|
||
|
||
IF NEW.area IS NOT NULL AND NEW.total_amount IS NOT NULL AND NEW.area > 0 THEN
|
||
SET NEW.area_price = NEW.total_amount / NEW.area;
|
||
ELSE
|
||
SET NEW.area_price = NULL;
|
||
END IF; |