2017-04-06 8 views
1

私は3列の列1、列2、列3(合計)を持っています。私は、すべての更新クエリの後に3列に列1と列2の合計を入れたいと思います。注:私はコードイグナイタを使用しています..私はそれを行うことができますか?2つの列を合計し、更新ごとに自動的に合計列に挿入する方法

+0

あなたがこれを達成するためにトリガーを使用することができます。 – dsharew

+0

トリガーの使い方は? –

+0

更新コマンドをわずかに変更して簡単に行うことができます。 UPDATEテーブル1 SET COL1 = X、COL3 = X + COL2 WHERE ........ Xは入力値です。これまでにCOL1を更新すると、同じクエリでCOL3も更新されます。 – blokeish

答えて

1

は次のように試してみてください、それをやってするべきではありません。ここで

DELIMITER $$ 
CREATE TRIGGER updtrigger AFTER UPDATE ON mytable 
FOR EACH ROW 
BEGIN 
    IF NEW.col1 <> OLD.col1 OR NEW.col2 <> OLD.col2 THEN 
     SET NEW.col3 = NEW.col1 + New.col2;  
    END IF; 
END $$ 

非常に良いtutorialです。

AFTER UPDATEトリガーとは、 のUPDATE操作が実行された後、MySQLがこのトリガーを起動することを意味します。

+0

あなたはBEFORE AFTERを書いています。これはクエリの前後に実行されますか?あなたはFOR EACH ROWを書いていますが、私は列が更新されている行だけを実行したいと思います。私が必要とするものに親切に編集してください...ありがとう –

+0

ええ、私は前に削除しました。単一の問合せで複数の行を更新できるため、FOR EACH ROWが必要です。 – dsharew

+0

ここで最後に、このトリガーコードでクエリを実行する最後のこと –

0

なぜトリガーを作成するのではなく、dbを更新するだけですか?プラスあなたが挿入後にトリガーを作成した、それは前に行く必要があります。しかし、本当にあなたはそのよう

0

は、このコードを試してみてください。

DELIMITER $$ 

CREATE 
    TRIGGER `db_name`.`trigger_name` AFTER UPDATE 
    ON `db_name`.`table_name` 
    FOR EACH ROW BEGIN 
    UPDATE 
     `table_name` 
    SET 
     `column3` = `column1` + `column2`; 
    END$$ 
DELIMITER ; 
関連する問題