如何限制用户在某个时间段不能插入数据但是能修改

[复制链接]
查看11 | 回复6 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
如何限制用户在某个时间段不能插入数据但是能修改。
具体说。比如用户A 我想在上午10点到下午4点之间不能insert,但是能update。其他时间可以insert and update。
oracle版本为9205。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
如果不是3层结构,会话的断开连接不是太频繁的话。可以考虑使用系统触发:
create trrigger .......
after logon on database
ifusername ='... ' then
if time ='......' then
exec immediate'revoke insert into ..........';
else
exec 'grant insert\update ......';
end if
else
exit;
end
.........
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
谢谢小新
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
如果登录的是该表的用户,则不可以用此方法。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
路过,顺便问一下能不能用角色来实现
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 zhumingjun 发布
[B]如何限制用户在某个时间段不能插入数据但是能修改。
具体说。比如用户A 我想在上午10点到下午4点之间不能insert,但是能update。其他时间可以insert and update。
oracle版本为9205。 [/B]


insert和update无非是控制对象权
时间可以通过crontab结合包含授权与撤权的sql脚本实现
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
参照这个:
CREATE OR REPLACE TRIGGER secure_emp
BEFORE INSERT OR UPDATE OR DELETE ON employees
DECLARE
v_dummy VARCHAR2(1);
BEGIN
IF (TO_CHAR (SYSDATE, 'DY') IN ('SAT','SUN'))
THEN RAISE_APPLICATION_ERROR (-20506,'You may only
change data during normal business hours.');
END IF;
SELECT COUNT(*) INTO v_dummy FROM holiday
WHERE holiday_date = TRUNC (SYSDATE);
IF v_dummy > 0 THEN RAISE_APPLICATION_ERROR(-20507,
'You may not change data on a holiday.');
END IF;
END;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行