2016-10-31 13 views
0

レコードを挿入する前にcolを変更したいです!私は取引のためのテーブルを持っており、新しいトランザクションごとに私は0.5%手数料を設定したいと思います。MySQLトリガは、挿入前に列を変更します

問題は:彼はいつも0amount colに挿入します。しかし、私は、現在のcurrent value x 0.50%

DROP TRIGGER IF EXISTS `viptest`.`testing`; 
DELIMITER $$ 

CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    TRIGGER `viptest`.`commission_before_insert` BEFORE INSERT 
    ON `viptest`.`transaction_history` 
    FOR EACH ROW   
    BEGIN 
     SET NEW.amount = NEW.amount % 0.50'; 
    END$$ 

DELIMITER ; 
+0

てみたい 'NEW.amount *しかし、あなたはおそらく、入力データを変更することでこれを行うべきではありません1.005'トリガーで –

答えて

0

は0.5%の手数料を追加するための正しい表現がある。この

DROP TRIGGER IF EXISTS `viptest`.`testing`; 
DELIMITER $$ 

CREATE 
/*[DEFINER = { user | CURRENT_USER }]*/ 
TRIGGER `viptest`.`commission_before_insert` BEFORE INSERT 
ON `viptest`.`transaction_history` 
FOR EACH ROW   
BEGIN 

    -- If you just want to modify current row, this line should work 
    SET NEW.amount = NEW.amount * 0.5/100; 

    -- If you want to process this commission into another table, you can use this line 
    insert into db_name.table_name (col1, col2, col3) 
    select (val1, NEW.amount * 0.5/100, val3); 

END$$ 

DELIMITER ; 
関連する問題