我对使用触发器事件来获得预期结果有点困惑
这里是主桌 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
以及 fee.f_month
以及 fee.year
相同则停止插入。我的意思是忽略 fee.fid
.
并取得以下成果。期望的那个
发票
inv | rn | y_d | status
==============================
1 | 1 | 1 | 0
2 | 2 | 1 | 0
3 | 3 | 1 | 0
在触发器表中 inv
是主键并自动递增
1条答案
按热度按时间5cnsuln71#
检查是否
inv
存在匹配项year
以及rn
.如果不存在,则使用
insert
声明。执行以下操作: