Table A
ID Bigclass Smallclass title
5 ,12,12,15,18 ,2201,2203,2856,3235 测试测试测试
Table B id bigclass smallclass title
1 12 2201 测试测试测试
2 12 2203 测试测试测试
3 15 2856 测试测试测试
4 18 3235 测试测试测试 bigclass smallcalss
12 --> 2201,2203,...
15 2856,...
18 3235,... 求一触发器,当向A表中插入一条数据时,触发向B表中插入相应条数(根据小类的个数)的数据,(如上 当向A表插入ID=5这条数据时,将触发向B表插入4条数据),删除也一样。
ID Bigclass Smallclass title
5 ,12,12,15,18 ,2201,2203,2856,3235 测试测试测试
Table B id bigclass smallclass title
1 12 2201 测试测试测试
2 12 2203 测试测试测试
3 15 2856 测试测试测试
4 18 3235 测试测试测试 bigclass smallcalss
12 --> 2201,2203,...
15 2856,...
18 3235,... 求一触发器,当向A表中插入一条数据时,触发向B表中插入相应条数(根据小类的个数)的数据,(如上 当向A表插入ID=5这条数据时,将触发向B表插入4条数据),删除也一样。
初学者最容易范的错误就是喜欢滥用存储过程和触发器,其实很多情况下最好少用,这些在数据访问量大的时候会造成数据库瓶颈。所以现在一般推荐在同一个事务中在代码中来完成这些处理。你这个用触发器实现其实很简单,就是分割字符串,然后分别插入。在如果在程序中实现,同样简单,使用split(",");就可以把两个class都分隔成数组,插入就方便多了。删除时也一样。 上面是从设计的角度来说的,你如果真要触发器实现,你就要看看具体数据库的语法。
LZ自己改写就是了.插入和删除的都是一样的.在delete后面加or insert into就OK了
至于用什么条件,也就是delete.... where....LZ自己去以自己的需求弄就是了
create or replace trigger delEmp
before delete
on department_24
for each row
begin
dbms_output.put_line(:old.department_id);
delete employee_24 where employee_24.department_id = :old.department_id;
end;