关于oracle的触发器难题

godliu521 2005-06-29 05:33:04
表A,有列x,y,z
x为主键
编制一个触发器,要求实现:
insert A (x,y,z) values(1,2,3);执行这条语句时,
发现y列的值是2,那么实际插入1,2,8这个数据
...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_cyh 2005-07-04
  • 打赏
  • 举报
回复
那我也来接分了,呵呵。
weiting623 2005-06-30
  • 打赏
  • 举报
回复
create or replace trigger A_trigger
before insert on A
for each row
begin
if :new.y=2 and :new.z=3
then :new.z:=8;
end if;
end;
就是说如果当前插入的记录y=2且z=3,则把插入记录的z改为8。
UandM 2005-06-30
  • 打赏
  • 举报
回复
呵呵,我当然不会反对了,应该的
godliu521 2005-06-30
  • 打赏
  • 举报
回复
create or replace trigger test_trigger
after insert on test
declare
stmt varchar2(200);
begin
stmt := 'update A set z = 8 where y = 2 ';
EXECUTE IMMEDIATE stmt;
end test_trigger


这个执行起来是由oracle错误的,
问题已经在 UandM(0) 那里得到解决

本来打算今天早晨来把100分都给这位的
结果发现大家踊跃参与,并且提出了自己的见解

如果UandM(0)同学不反对的话,我打算拿出以小部分分给其他几个人分一下

不会很多。。。请谅解,我只能给100分
zsfww1205 2005-06-29
  • 打赏
  • 举报
回复
就是说美插入一条纪录,如果有记录的y值为2的话,就把z的值改为8
zsfww1205 2005-06-29
  • 打赏
  • 举报
回复
create or replace trigger test_trigger
after insert on test
declare
stmt varchar2(200);
begin
stmt := 'update A set z = 8 where y = 2 ';
EXECUTE IMMEDIATE stmt;
end test_trigger
UandM 2005-06-29
  • 打赏
  • 举报
回复
begin
:new.z:=:new.z**:new.y;
end;
就是说插入后的z等于你插入时的z的y次方
godliu521 2005-06-29
  • 打赏
  • 举报
回复
请用我说得问题表描述好吗


begin
:new.c:=:new.c**:new.b;
end;

这里得 行时什么意思我没看懂啊~~~~
UandM 2005-06-29
  • 打赏
  • 举报
回复
create or replace trigger test_trigger
before insert on test
for each row
begin
:new.c:=:new.c**:new.b;
end;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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