在线急等:一个简单的ORACLE触发器,搞定,立马解分

sindia 2005-04-14 09:41:19
两张表sm_110和sm_refuse,在插入sm_110时,如果sm_110中dest_tele_num在sm_refuse表的tele_num字段中存在,则不予插入,sql server中已搞定,求oracle的具体写法,按我下面的写法,总说我缺少右刮号。
create or replace trigger sm_insert
before insert on sm_110
for each row when (exists (select tele_num from sm_refuse where tele_num= :new.dest_tele_num))
rollback
end sm_insert
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sindia 2005-04-14
  • 打赏
  • 举报
回复
oracle的触发器中是否可使用rollback,若不可,该用什么?
另外如果定义异常,直接抛出,是否就可以了
sindia 2005-04-14
  • 打赏
  • 举报
回复
哦,现在执行INSERT语句,执行触发器,结果显示,不能在触发器中ROLLBACK,该怎样改?
sindia 2005-04-14
  • 打赏
  • 举报
回复
用你的方法可以了,可如果用EXISTS我上面的语句该怎么改
老高高高 2005-04-14
  • 打赏
  • 举报
回复
up
czrain 2005-04-14
  • 打赏
  • 举报
回复
create or replace trigger sm_insert
before insert on sm_110
for each row
declare
n number:=0;
begin
select count(*) into n
from sm_refuse where tele_num= :new.dest_tele_num;
if n>0 then
rollback;
end if;
end sm_insert;

17,377

社区成员

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

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