公司下面的一级部门、二级部门、多级部门,及部门下面用户的数据。将公司、部门、用户的数据如果以树的形式存储,便于查询。
数据库表设置如下:
在organization表中为了快点查询某级表中所存在下级部门或者部门中的用户,增加hs字段,为快点定位该节点所在的位置信息。
- 数据插入时,用使用触发器生成hs
- 数据更新parent,所在的上级部门修改
- mysq触发器+java代码实现+事务
- mysql存储过程+事务实现
修改数据的parent时,需要考虑更新hs,除自身的hs需要修改时,还得修改该节点下属节点的hs修改
mysq触发器+java代码实现+事务
mysql的触发器不能对该表数据进行两次或者以上的修改操作,因为在修改parent后更新hs,只使用tigger无法实现,因此需要mysql中的tigger+业务层的代码实现
mysql存储过程+事务实现
实现该需求时,需要对表进行两次操作,若其中一次失败,需保证数据有效一致,则需要事务进行回滚。
存储过程、函数的区别
存储过程
无返回值,可参数输入,能带事务处理
函数
有返回值,可参数输入,不能带事务处理