小编Mat*_*ari的帖子

如果更新后整行保持不变,如何签入触发器?

当然,我可以像这样对每一列进行比较:

if (old.column1 = new.column1 and old.column2 = new.column2...)
Run Code Online (Sandbox Code Playgroud)

但是,例如,如果我将来添加另一列,它将是硬编码的并且难以维护。

有没有办法检查所有列是否保持不变而无需手动检查每个单独的列?

postgresql trigger

12
推荐指数
1
解决办法
2983
查看次数

SQL Server - 如何同时实现 READCOMMITED 和 NOLOCK?

如果我有一个用户表:

id | name   | age
1  | Mateus | 27
Run Code Online (Sandbox Code Playgroud)

第一个事务执行更新,并使事务保持打开状态,不提交或回滚:
update User set name = 'John' where id = 1;

同时,第二个事务执行一个选择:
select * from User where id = 1;
该命令将等待第一个事务通过提交或回滚释放锁,除非第二个事务使用表提示with(nolock),如下所示:
select * from User with(nolock) where id = 1;
这将返回记录而不锁定事务,但是它将返回未提交的值John而不是原始值Mateus

据我所知,只有两种方法可以在不锁定当前事务的情况下返回锁定的记录,一种可以使用with(nolock)将返回记录但带有未提交值的方法,并且with(readpast)不会返回记录。

有没有办法可以在不锁定表的情况下返回记录并返回其“旧”值?

sql-server isolation-level

5
推荐指数
1
解决办法
309
查看次数

标签 统计

isolation-level ×1

postgresql ×1

sql-server ×1

trigger ×1