这是我第一次使用存储过程 这是我的数据库
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
但是这不起作用...正确的方法是什么?