今天在复查自己实现的收藏模块时候,发现之前少考虑了一种场景:人员在管理文件夹页面删除文件夹及连接,但是在连接收藏页面不刷新页面,继续收藏时,原始的无条件判定Insert语句会成功插入数据,经过网上搜索,看到了很多选择方案:
①plsql的package或者存储过程都可实现
②oracle的触发器
③平常SQL(数据库级别锁处理,由于自己没有oracle库存储过程权限,因此先发出这种,后续有时间补充上面两点)
之前在网上看到的点③描述为:https://blog.youkuaiyun.com/fuck487/article/details/77189658
但是实践根本无法执行,因此自己进行了封装如下:
INSERT INTO TABLE
(字段1,
字段2,
字段3)
SELECT T.字段1,
T.字段2,
T.字段3
FROM (SELECT cloum1 AS 字段1, //这里的cloum1值可使用#{}方式注入
cloum2 AS 字段2,
cloum2 AS 字段3
FROM DUAL) T
WHERE EXISTS (SELECT ID
FROM TABLE S
WHERE S.ID = #{PARENT_ID}
AND S.DJXH = #{DJXH})
以上为我的实现方式,如有更优方案,欢迎留言讨论哦