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 ;
4

1 回答 1

0

您正在从 bills 表中选择所有记录,因为您没有引用有关触发触发器的行的任何内容。

AFTER INSERT触发器内部,有一个名为NEW引用刚刚插入的行的别名。大概你的意思是做这样的事情:

WHERE bills.Company=NEW.Company

这将选择“账单”中公司与您刚刚插入的行中的公司相同的行。

但是,我不知道“用户”在哪里,但希望您打算从账单JOIN用户中选择ON某种标准。

于 2013-09-26T20:01:36.980 回答