我正在尝试向付款表中添加新数据,但应按总用户数分配金额
并且仅添加输入到话费表中的新数据。
但是,它只是每次都添加所有数据,而不是添加新数据。

谁能帮我吗?

    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 ;

最佳答案

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

AFTER INSERT触发器中,有一个名为NEW的别名,它引用刚刚插入的行。大概您打算执行以下操作:

WHERE bills.Company=NEW.Company


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

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

关于mysql - 使用计数未能按预期方式触发除数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19036702/

10-13 02:52