我通过覆盖整个表来定期更新表。但是,我也经常在该表上运行SELECT查询。我的问题是,如果我当前正在运行覆盖表的查询,并且在更新/覆盖表的同时尝试在表上运行SELECT查询,该怎么办?相反,我正在从该表中进行选择,但是覆盖该表的常规作业会同时开始。是否有任何时间点无法读取表/只能部分读取表或无法覆盖表?我需要100%确保SELECT查询将始终正常运行。
答案 0 :(得分:1)
您始终可以在表上运行SELECT
语句,并且该语句永远不会反映部分修改的状态。从表中SELECT
进行访问也不会阻止运行对其进行修改的查询。如果使用DML修改表,请note the limitations from the documentation:
仅允许以下DML语句组合在表上同时运行:
- 更新和插入
- 删除并插入
- 插入和插入
否则,DML语句之一将被中止。例如,如果针对该表同时执行两个UPDATE语句,则其中只有一个会成功。