首页 > 解决方案 > SQL 阻止从表中选择

问题描述

有没有办法防止从表中选择,比如在 9 到 5 之间允许选择,否则不返回任何内容?

触发器用于 DML、DDL、数据库操作。

用程序来做,检查时间/其他条件是否正确?

还是有更简单的方法来防止选择?

标签: sqloracledatabase-trigger

解决方案


您可以创建一个视图并仅授予该视图的 SELECT 特权,并撤销对基础表的任何特权。

如果当前时间不允许,则视图可以包含一个 WHERE 条件,该条件仅返回 false:

create view .. 
as
select ...
from ...
where to_char(sysdate, 'hh24:mi') >= '09:00' 
  and to_char(sysdate, 'hh24:mi') <  '17:00'

推荐阅读