我有一个触发器,可以在允许插入行之前检查另外几个表。但是,在我检查其他表并插入行之间,其他表可能会更新。
在插入新行之前,如何确保我正在检查的表保持一致状态?我正在考虑锁定,但我读过的所有内容归结为如果你不将锁定保留给Oracle,你几乎肯定做错了。
答案 0 :(得分:2)
Oracle已经在为您执行此操作,当您执行select时,它将查看事务开始时(第一个DML的时间)的所有表。这不会阻止数据在您下面被更改,但您的交易只是不会看到它被更改。如果你想阻止这些数据被改变,那么你可以使用“选择更新”,正如贾斯汀洞穴所暗示的那样。
我会严重质疑你在做什么,触发器,除了在最微不足道的情况下,几乎总是会导致意想不到的副作用。