我有一個包含bal_load int列的配置文件表。 我有2個額外的表格,即債務和支付金額欄。 我需要做一個觸發器,在向債務插入一個值後,將插入的債務添加profile.bal_load的當前值,同時扣除插入是否來自付款。插入更新後創建觸發器
配置文件的表
+--+--------+
|ID|BAL_LOAD|
+--+--------+
|1 |500 |
|2 |300 |
+--+--------+
如果這樣的刀片將在債務的表發生,
債務
+--+----------+------+
|ID|PROFILE_ID|AMOUNT|
+--+----------+------+
|1 |1 |20 |
+--+----------+------+
則觸發應與債務的數額增加bal_load。
PROFILE
+--+--------+
|ID|BAL_LOAD|
+--+--------+
|1 |520 | -->500+20
|2 |300 |
+--+--------+
如果這樣的刀片將在付款的餐桌發生,
付款
+--+----------+------+
|ID|PROFILE_ID|AMOUNT|
+--+----------+------+
|1 |2 |220 |
+--+----------+------+
則觸發應該減去bal_load與支付的金額。
PROFILE
+--+--------+
|ID|BAL_LOAD|
+--+--------+
|1 |520 |
|2 |80 | -->300-220
+--+--------+
這是我對債務的金額插入憔悴觸發
create trigger bal_load_debt after insert on debt
for each row
begin
update profile
set bal_load = bal_load + amount
where profile.id = debt.profile_id;
end
和支付的金額插入
create trigger bal_load_payment after insert on payment
for each row
begin
update profile
set bal_load = bal_load + amount
where profile.id = payment.profile_id;
end
請幫助:)
對於更新,我用這個
CREATE TRIGGER bal_load_debt
AFTER INSERT
ON debt
FOR EACH ROW
UPDATE Profile
SET bal_load = bal_load + NEW.amount
WHERE profile.id = debt.profile_id
我得到這個錯誤消息
1235 - 該版本的MySQL還不支持「多個觸發器使用相同的動作時間和事件一個表」
SQL Server不具有'的每一行'選項 –
我很抱歉造成混亂,我正在使用xampp的mysql。順便說一句謝謝你的迴應:) – user2713803
下面的例子可能會有幫助:[SQL小提琴演示(http://sqlfiddle.com/#!9/65cda/1)。 – wchiquito