我有一个表称为buyer_invoice_payments条件不工作(buyer_inv_id(PK),payment_id(PK),paid_amt)。当从该表中的记录被删除,则需要基于payment_id的计数MySQL后,DELETE触发是否如预期般
下面是MySQL的查询,以AFTER DELETE触发器两个方面来进行操作,
BEGIN
IF ((SELECT COUNT(payment_id) FROM buyer_invoice_payments BIP WHERE BIP.payment_id = OLD.payment_id) > 1) THEN
# a certain operation
ELSE
# a certain operation
END IF;
END
我的问题是,尽管COUNT(payment_id)大于1,但这种情况总是会失败,这意味着它会转到其他块。
但是,如果我改变OLD.payment_id到payment_id在if条件,这将工作但当COUNT(payment_id)等于1,也进入到如果块(而不是其他块)
我已经尝试了几种不同的方式来改变if条件,但他们没有工作,这里是我试过的几种方法(只有如果条件显示)
#1
IF ((SELECT COALESCE(COUNT(payment_id),0) FROM buyer_invoice_payments BIP WHERE BIP.payment_id = OLD.payment_id) > 1) THEN
#2
IF (SELECT (COUNT(payment_id) != 1) FROM buyer_invoice_payments BIP WHERE BIP.payment_id = OLD.payment_id) THEN
有人能帮我弄清楚我做错了什么。
哪里是旧表?你的查询是错误的。在哪里块你把OLD.payment但从你之后没有提到任何表像OLD的东西 –
@RamiFar OLD不是一个表,它是建立在关键字在MySQL中,看看这篇文章http://stackoverflow.com/ question/4798768/i-want-a-trigger-to-delete-from-2-tables-in-mysql –
哦,对不起,确定..这不在我的脑海里 –