2013-09-26 48 views
0

我試圖向支付表添加新數據,它應該除以總用戶數 並僅添加輸入到帳單表中的新數據。但是它只是每次都添加它們而不是新數據。觸發器劃分金額使用計數不按預期方式工作

任何人都可以幫助我嗎?

DELIMITER // 
CREATE TRIGGER `newPayment` 
AFTER INSERT ON `bills` 
FOR EACH ROW INSERT INTO payments (name, bill, DueDate, Value) 
SELECT users.name, bills.Company, bills.billDueDate, bills.Amount/(SELECT COUNT(name) FROM users) 
FROM bills, users 
WHERE bills.Company=bills.Company AND users.name=users.name 
// 
DELIMITER ; 
+0

爲什麼你不應該使用觸發器http://dba.stackexchange.com/questions/48797/does-trigger-improve-the-performance/48903#48903我分析了MySQL觸發器後面的代碼,並在那裏發表瞭解釋在源代碼中重寫爲註釋 –

回答

0

你選擇從票據表中的所有記錄,因爲你沒有引用任何關於觸發觸發器的行。

AFTER INSERT觸發器中,有一個名爲NEW的別名引用剛剛插入的行。想必你的意思是做這樣的事情:

WHERE bills.Company=NEW.Company 

這將選擇「賬單」行的公司是一樣的行中您剛插入的公司。

但是,我不知道哪裏有「用戶」數字,雖然預計你打算從賬單JOIN用戶ON中選擇某種標準。

+0

噢,謝謝隊友,用戶是另一個表,數據本身按預期從問題中通過,我的一個好朋友建議其不好的做法,並應使用tmp表使用過程。 –