Поле автоматического заполнения Mysql на основе значения двух других полей?

StackOverflow https://stackoverflow.com/questions/2330915

  •  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 ;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top