【发布时间】:2019-03-07 10:32:43
【问题描述】:
我对使用触发事件来获得预期结果有点困惑
这里的主表是fee。结构如下
费用
id | rn | fid | amount | f_month | year
====================================================
1 | 1 | 1 | 150000 | 1 | 1
2 | 1 | 2 | 50000 | 1 | 1
3 | 2 | 1 | 550500 | 2 | 1
4 | 2 | 2 | 200 | 2 | 1
5 | 3 | 1 | 550500 | 2 | 1
并且已经使用了简单的插入触发器。
DROP TRIGGER IF EXISTS `insertinv`;
CREATE DEFINER=`root`@`localhost` TRIGGER `insertinv`
AFTER INSERT ON `fee` FOR EACH ROW INSERT INTO invoice VALUES(null, NEW.rn, NEW.year, '')
我得到的输出
发票
inv | rn | y_d | status
==============================
1 | 1 | 1 | 0
2 | 1 | 1 | 0
3 | 2 | 1 | 0
4 | 2 | 1 | 0
5 | 3 | 1 | 0
但我想申请条件
如果fee.rn AND fee.f_month AND fee.year 相同,则停止插入。我的意思是忽略fee.fid。
并获得以下结果。预期的
发票
inv | rn | y_d | status
==============================
1 | 1 | 1 | 0
2 | 2 | 1 | 0
3 | 3 | 1 | 0
在触发器表中inv是主键并且自动递增
【问题讨论】:
-
你的触发器语法看起来不对。你只给出了伪代码吗?
-
@MadhurBhaiya,我已经编辑过了,这就是你的意思,不是吗?
-
不,在问题中写你完整的触发器语句。您当前的触发器是否在做某事?
-
@MadhurBhaiya,当前的触发器正在工作,我已经发布了结果 - 第一个 invoice table,但是我期望最后一个 invoice table
-
@AnandHmt 请检查答案。由于发票表中没有月份,我不能考虑。