数据库插入数据时添加校验判定(亲测有效)

今天在复查自己实现的收藏模块时候,发现之前少考虑了一种场景:人员在管理文件夹页面删除文件夹及连接,但是在连接收藏页面不刷新页面,继续收藏时,原始的无条件判定Insert语句会成功插入数据,经过网上搜索,看到了很多选择方案:

①plsql的package或者存储过程都可实现

②oracle的触发器

③平常SQL(数据库级别锁处理,由于自己没有oracle库存储过程权限,因此先发出这种,后续有时间补充上面两点)

之前在网上看到的点③描述为:https://blog.csdn.net/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})

以上为我的实现方式,如有更优方案,欢迎留言讨论哦

你可能感兴趣的:(数据库插入数据时添加校验判定(亲测有效))