存储过程通过table2.col值更新table1.col

时间:2018-06-21 12:14:52

标签: mysql stored-procedures triggers

这是我第一次使用存储过程 这是我的数据库

profiles : id , user_id , credit 
user_credits : id , user_id , amount , type  , current_credit 

user_credit_charg : id,  user_id , amount 
user_credit_reward : id,  user_id , amount 
user_credit_referal : id,  user_id , amount 

基本上,我有多个选项供用户更改其信用额,因此我为每个选项创建了一个带有其特定列的表(我没有在此处发布),并且我有一个user_credits,它是用于所有信用额更改

所以它的工作方式是通过触发每个选项

        CREATE TRIGGER  before_insert_user_credit_charg
          BEFORE INSERT
          ON user_credit_charg
          FOR EACH ROW
        BEGIN
             UPDATE profiles SET credit = credit + NEW.amount  WHERE user_id = NEW.user_id ;
        END             

        CREATE TRIGGER  after_insert_user_credit_charg
          AFTER INSERT
          ON user_credit_charg
          FOR EACH ROW
        BEGIN

             INSERT INTO `user_credits` ( `user_id` , `type` , `amount` )  VALUES ( NEW.user_id,  'charg' , NEW.amount) ;

        END             

这是问题所在,我在current_credit表中有一个名为user_credits的列 而且我想在每次更改后都将用户当前的信用额度放到...基本上profiles.credit

因此,尽管我会创建一个存储过程并在触发器内部调用它,但由于没有办法通过触发器i来实现,所以

我从没使用过它们,我不确定它是否有效..这就是我想出的

CREATE PROCEDURE UpdateCredit(user_id INT())
BEGIN

UPDATE user_credits set current_credit = (select credit from profiles where profiles.user_id = user_credits.user_id ) where user_id = user_id


END

但是这不起作用...正确的方法是什么?

0 个答案:

没有答案