2 u010232070 u010232070 于 2016.03.24 14:49 提问

mysql 触发器插入数据可以,但是update没有成功,update前后的insert都执行了 5C

DROP TRIGGER IF EXISTS t_afterinsert_invitation_trigger ;
DELIMITER $$
CREATE TRIGGER t_afterinsert_invitation_trigger
AFTER INSERT ON invitation_trigger
FOR EACH ROW
BEGIN
declare _mid int;
declare _parent_level int;
declare _mids int;
declare _l int;
declare _r varchar(50);
set _mid = New.mid;
set _parent_level = New.midlevel;
set _mids = New.mids;

INSERT INTO `test`.`invitation` (`id`, `mid`, `midlevel`, `mids`, `midslevel`) 
VALUES (New.id, _mid, _parent_level, _mids, New.midslevel);

UPDATE invitation _up INNER JOIN 
(SELECT T2.mid
FROM ( 
        SELECT 
            _r AS _mids, 
    (SELECT _r = mid FROM invitation WHERE mids = _mids) AS mid, 
    _l = _l + 1 AS lvl 
        FROM 
                (SELECT _r = New.mid, _l = 0) vars, 
                invitation h 
        WHERE _r <> 0) T1 
JOIN invitation T2 
ON T1._mids = T2.mids AND T2.midlevel > New.midlevel
ORDER BY T1.lvl ASC) B
ON _up.mid = B.mid
SET _up.midlevel = New.midlevel;

INSERT INTO `test`.`invitation` (`id`, `mid`, `midlevel`, `mids`, `midslevel`) 
VALUES ('42', '14', '2', '43', '3');

END$$
DELIMITER ;

2个回答

u010232070
u010232070   2016.03.24 14:56

这个update直接在外面执行时可以修改数据的,但是放入触发器里面就没有反应了,求大神解答啊

CSDNXIAON
CSDNXIAON   2016.03.30 11:21

关于mysql 触发器(insert,update)
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SQL(insert、delete、update)执行成功,但是数据库表中无显示无记录
    如题,程序中insert一条记录,调试过程中根据执行结果发现此条sql已经执行成功(影响行数为1且插入记录已生成自增主键正确值),但是查询数据库相应表时发现表中并无相应记录,通过直接在表中插入测试数据也能发现已有记录的主键值自增后的值已被占用(例如:id为主键,当前id为52,下一条记录插入进来时id值应当为53,那么直接操作表插入测试数据时实际id值为54,id为53虽然不存在但是已被占...
mysql在insert触发器里update当前数据
今天在学习触发器时遇到了一个问题: 为activities表创建一个insert触发器,初始化一些数据 CREATE DEFINER=`root`@`localhost` TRIGGER `initActivities` BEFORE INSERT ON `activities` FOR EACH ROW update activities set activities_date = NOW() where activities_id = new.activities_id; 插入数据时,出现以下错误:
insert语句执行成功,但数据库类没有变化
可能就是你插入的多个字段中,有一个为空。例子如下 String sql="insert into allorder values('" + orderid + "','" + bookid +"','1','" + username + "','0')";            //out.println("htllo");            int result=stmt.exec
用mybatis在java后台insert数据,能运行但数据库没有添加成功
用mybatis在java后台insert数据,能运行但数据库没有添加成功。 如图所示,没有报错,但是在数据库中却没有成功添加该条数据 结果是因为没有提交导致,正确代码如下: 添加:         sqlSession.commit();         sqlSession.close(); 问题解决!
spring中调用jdbcTemplate实现update插入未成功
代码如下: @RunWith(SpringJUnit4ClassRunner.class) @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) @Transactional @ContextConfiguration(locations = "classpa
创建INSERT、DELETE、UPDATE 触发器示例
触发器是基于一个表创建的,但是可以针对多个表进行操作。所以触发器可以用来对表实施复杂的完整性的约束,当触发器所保存的数据发生改变时,触发器所保存的数据发生改变时,触发器被自动激活,从而防止对数据的不正确修改。         下面对每个INSERT、DELETE、UPDATE触发器举一个小例子来加深理解: INSERT触发器:         INSERT触发器就是当对定义触发器的表执行IN
mysql insert与update触发器
前言背景最近做的一个项目某一个功能模块必须要下线,这个模块又很重要,因为牵扯到修改用户的相关状态,不修改用户就不能使用;但是关联的各种客户端APP、IOS、H5新版本开发完成因为某些原因不能上线,为了不影响用户使用,只能从底层的数据库去想想办法,想来想去只有用触发器(trigger)了,虽然会影响一点效率,不过好在只牵涉一张表,而且表数据操作频率不高,而且只用撑过一段时间就可以下掉。 该表有十几个
关于mysql 触发器(insert,update)
1. 当表A新增一条记录,表B则跟着添加这条记录 #删除当前触发器 drop TRIGGER IF EXISTS t_edw_event_add_cdr_3; #创建触发器:当ccbill_cdr表新增一条记录,则在edw_event_add_cdr表添加这条记录 CREATE TRIGGER t_edw_event_add_cdr_3 after INSERT ON ccbill_cdr
C#写入数据库访问层时update正常执行后数据库并没改变
using (var conn = new OracleConnection(ConnectionString)) { if (!string.IsNullOrWhiteSpace(entity.ADDRESSBOOK)) { conn.E
关于mysql中insert、update、delete的触发器(跨库操作)
 --新增触发器 drop trigger if exists test_zwd; delimiter// create trigger test_zwd after insert on platformbackstage.t_oper_keywords_copy for each row begin  insert into baseForReptile.t_oper_ke