pl/sql这款工具类似于常见的Navicat等工具。

特点:使用pl/sql对Oracle执行SQL查询语句时,我们可以直接可视化批量修改查询出的结果。

正常使用Navicat是无法做到的

PostgreSQL批量查询语句 plsql批量查询_数据

一、使用PLSQL演示批量修改查询结果

使用步骤

只需在查询时对读取的记录添加X锁(原因文末解释),即添加 for update,如下例子所示:

-- 对读取记录加X锁;
SELECT ··· for update; -- 不添加语法
  1. 执行SQL语句

PostgreSQL批量查询语句 plsql批量查询_PostgreSQL批量查询语句_02

  1. 点击绿色锁按钮开锁,解除编辑限制

PostgreSQL批量查询语句 plsql批量查询_批量修改_03

  1. 然后就可以直接可视化修改数据了!也可以复制Excel表格上的数据,进行批量修改数据

PostgreSQL批量查询语句 plsql批量查询_批量修改_04

  1. 修改完毕后,点上方的绿色的勾完成编辑,然后再点锁,锁定编辑

PostgreSQL批量查询语句 plsql批量查询_java_05

  1. 最后,也是最重要的一步:commit提交修改,也可以rollback回滚,放弃修改!

PostgreSQL批量查询语句 plsql批量查询_共享锁_06

为什么要添加X锁?

数据库的锁按分类划分有许多,如下图

PostgreSQL批量查询语句 plsql批量查询_java_07

我们使用的,从数据操作的类型划分:

  • 读锁 :称为 共享锁 Shared lock,英文用 S 表示。在共享锁存在时,其他事务只能获取共享锁,而不能获取排它锁(即对所查询的记录只能大家一起读,不允许有人修改),从而保证了数据的一致性。
-- 对读取记录加S锁;
SELECT ··· for share;-- MySQL8.0新语法
  • 写锁 :称为 排他锁 exclusive lock,英文用 X 表示。当前写操作没完成前,它会阻断其他写锁和读锁(只能我自己修改,其他人不允许读也不允许改)。这样就能确保只有一个事务能执行写入,并防止其他用户读取正在修改的记录。

总结:现实中,公司内部很多系统、用户都在同时使用同一个数据库,加锁是为了防止并发的读写操作,在你修改数据时带来的脏读、不可重复读和幻读的并发问题。

注意:加X写锁会严重影响其他用户的并发使用,一定要提交或者回滚释放掉写锁!!!