急!高难问题关于TRIGGER

Petergepeter 2003-11-06 02:02:57
有记录插入表。
需判断栏位为某一条件,才可以插入。
否则禁止。
CREATE OR REPLACE TRIGGER MYTABLE_TRIGGER
BEFORE INSERT
ON MYTABLE
FOR EACH ROW
BEGIN
IF :NEW.FLAG = 'S'
允许插入
ELSE
不允许
END IF

EXCEPTION
WHEN OTHERS THEN
NULL;
END;
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-11-06
  • 打赏
  • 举报
回复
可以这样解决,copy原表为一个副本,以后访问哪个表
CREATE OR REPLACE TRIGGER MYTABLE_TRIGGER
BEFORE INSERT
ON MYTABLE
FOR EACH ROW
BEGIN
IF :NEW.FLAG = 'S'
insert into MYTABLE_copy values(;new.col_name,....);

END IF
END;
beckhambobo 2003-11-06
  • 打赏
  • 举报
回复
触发器根本不能解决此问题,不管FLAG = 'S'条件是否执行.
触发器只能影响插入结果,不能阻止其它插入
hdkkk 2003-11-06
  • 打赏
  • 举报
回复
insert into (select * from t where col1<>'s') a values ...
看看可不可以
lhbsh 2003-11-06
  • 打赏
  • 举报
回复
1. 在Table上加Constraint,限制该列必须满足条件
2. 在Trigger中Raise Exception,造成Insert语句执行失败
csqno1 2003-11-06
  • 打赏
  • 举报
回复
AFTER INSERT
看一下
bzszp 2003-11-06
  • 打赏
  • 举报
回复
不应该在这里处理
应该在执行insert 语句之前判断

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧