2

値を自動インクリメントできることは知っていますが、他の2つのフィールドの値に基づいてフィールドに入力できるかどうか疑問に思いました。次のフィールドを含むテーブルがあります。

CREATE TABLE pligg_links (
  ...
  link_votes INT,
  link_reports INT,
  link_votes_total INT,
  ...
);

フィールドlink_votes_totalは、link_reportsから差し引かれたフィールドlink_votesの値を保持する必要があります。つまり、基本的に、これは数学の方程式ですlink_votes_total = link_votes - link_reports。これは、データが保存される前にphpを使用せずに実行できますか?

4

2 に答える 2

3

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 ;

参考文献:

于 2010-02-25T01:19:42.917 に答える
1

参照: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 ;
于 2010-02-25T01:24:53.710 に答える