SET NEW.hash = MD5(CONCAT(new.idItem, new.title, new.count, new.price));
END
$
CREATE
TRIGGER before_update_item
BEFORE UPDATE
ON item
FOR EACH ROW
BEGIN
SET new.hash = MD5(CONCAT(new.idItem, new.title, new.count, new.price));
END
$
DELIMITER ;
Вот пример вставки
INSERT INTO `Item`
(`idItem`,`title`,`count`,`price`)
VALUES
(null,'fsdfsd',2,23.45),
(null,'sdfsdf',1,26.45),
(1,'12312312',2,23.45),
(2,'—--',1,26.45)
ON DUPLICATE KEY UPDATE
title = VALUES(title),
count = VALUES(count),
price = VALUES(price);
SELECT * FROM `Item`;
SELECT * FROM `Change`;
Есть ли возможность сделать все это более универсально, а не дублировать для каждой таблици?
Например, можно ли как-то пройтись по NEW и OLD, как по массиву или передать его в процедуру? И можно ли узнать имя таблици для которой вызывается триггер?
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Портфолио https://www.behance.net/d4d4186e
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Актуальные контакты:
Telegram: @Nikker_web
E-Mail: tarasevich.email@gmail.com
Разрабатываю дизайн групп в соц сетях, сайтов, приложений, другой дизайн под заказ
Портфолио https://www.behance.net/d4d4186e
Question
CoDy
Всем привет.
Есть следующая задача:
- отследить изменение таблици(insert/update), причем нужно указать какие поля изменились;
- в спец поле в таблице вставлять hash всей записи.
Вот мое решение
Вот пример вставки
Есть ли возможность сделать все это более универсально, а не дублировать для каждой таблици?
Например, можно ли как-то пройтись по NEW и OLD, как по массиву или передать его в процедуру? И можно ли узнать имя таблици для которой вызывается триггер?
Edited by CoDyLink to comment
Share on other sites
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.