请问这个行级触发器怎么写

puppylsy 2003-09-22 02:47:08
表1:Address 表2:Class 表3: (Address和Class的映射表)
AddressID(key) ClassID(key) AddressID
AddressName ClassName ClassID

表4:
AddressID(key)
AddressName
ClassName1
ClassName2

现在往表4中插入表1的数据,还希望插入ClassName1和ClassName2两个字段,这两个字段是表4的AddressID从表3映射表中查出来对应,前两个ClassID对应到表2的ClassName字段(如果没有两个就设为空),请问应该怎么写触发器,多谢!
...全文
12 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
puppylsy 2003-10-17
  • 打赏
  • 举报
回复
多谢各位大虾指点,再次向各位提供帮助的朋友和帮我顶的朋友致谢!
vrv0129 2003-09-25
  • 打赏
  • 举报
回复
up
DavidGu 2003-09-25
  • 打赏
  • 举报
回复
注意,你无法在一个表里插入记录时,再通过后台的TRIGGER来触发修改这个表的字段。因此,你只能在插入记录时,在前台同时完成相关字段的赋值。你可以在pre insert 事件完成下面的代码。
good luck!

DECLARE
n_temp number;
class_name1 YourType;
class_name2 YourType;
CURSOR class_name IS
SELECT a.ClassName FROM 表2 a,表3 b
WHERE a.ClassId=b.ClassId and b.AddressId=:new.AddressId;
begin
if inserting then
n_temp:=1
for RC in class_name loop
if n_temp=3 then
exit;
end if;
if n_temp=1 then
class_name1:=RC.ClassName;
end if;
if n_temp=2 then
class_name2:=RC.ClassName;
end if;

n_temp:=n_temp+1;
end loop;
ClassName1:=class_name1;
ClassName2:=class_name2;
end if;
end;
anne 2003-09-24
  • 打赏
  • 举报
回复
少FORM关键字。
anne 2003-09-24
  • 打赏
  • 举报
回复
楼上的哥们写错了。
anne 2003-09-24
  • 打赏
  • 举报
回复
请问楼主,建表3的时候根据什么条件?也就是AddressID和ClassID如何对应?
beckhambobo 2003-09-22
  • 打赏
  • 举报
回复
create or replace trigger sy
before insert on 表4
for each row
begin
select ClassName into
select (select ClassName from 表2 b where b.ClassID=C.ClassID) INTO :new.ClassName1 from 表3 c where AddressID=:new.AddressID;
end;
/
qiuyang_wang 2003-09-22
  • 打赏
  • 举报
回复
create or replace trigger sy befor insert on 表4 for each row
begin
select classNeme into :new.className1 from 表2
where classid =
(select classid from 表3
where addressid = :new.addressid and rownum <= 1);

select classNeme into :new.className2 from 表2
where classid =
(select classid from 表3
where addressid = :new.addressid and rownum <= 1
and classid <> :new.className1);

EXCEPTION
WHEN OTHERS THEN
null;
end;

17,086

社区成员

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

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