Поле автоматического заполнения Mysql на основе значения двух других полей?
-
22-09-2019 - |
Вопрос
Я знаю, что возможно автоматическое увеличение значений, но мне было интересно, возможно ли заполнить поле на основе значения двух других полей.У меня есть таблица с полями:
CREATE TABLE pligg_links (
...
link_votes INT,
link_reports INT,
link_votes_total INT,
...
);
Поле link_votes_total должно содержать значение поля link_votes, вычитаемое из link_reports.Итак, по сути, это математическое уравнение: link_votes_total = link_votes - link_reports
.Возможно ли это без необходимости использовать php для этого до сохранения данных?
Решение
Да, это можно сделать, создав триггер для BEFORE INSERT
и еще один для BEFORE UPDATE
:
DELIMITER //
CREATE TRIGGER trig_mytable BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
SET NEW.link_votes_total = NEW.link_votes - NEW.link_reports;
END
//
CREATE TRIGGER trig_mytable BEFORE UPDATE ON my_table
FOR EACH ROW
BEGIN
SET NEW.link_votes_total = NEW.link_votes - NEW.link_reports;
END
//
DELIMITER ;
Дальнейшее чтение:
Другие советы
Видишь:http://dev.mysql.com/doc/refman/5.1/en/triggers.html
DELIMITER //
CREATE TRIGGER bir_links
BEFORE INSERT ON links
FOR EACH ROW
BEGIN
SET link_votes_total = NEW.link_votes - NEW.link_reports;
END;
//
CREATE TRIGGER bur_links
BEFORE UPDATE ON links
FOR EACH ROW
BEGIN
SET link_votes_total = NEW.link_votes - NEW.link_reports;
END;
//
DELIMITER ;
Не связан с StackOverflow