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条数据),删除也一样。

解决方案 »

  1.   

    触发器不是标准的SQL语句,会因为数据库不一样而不一样.这样给不出答案.
      

  2.   


    初学者最容易范的错误就是喜欢滥用存储过程和触发器,其实很多情况下最好少用,这些在数据访问量大的时候会造成数据库瓶颈。所以现在一般推荐在同一个事务中在代码中来完成这些处理。你这个用触发器实现其实很简单,就是分割字符串,然后分别插入。在如果在程序中实现,同样简单,使用split(",");就可以把两个class都分隔成数组,插入就方便多了。删除时也一样。  上面是从设计的角度来说的,你如果真要触发器实现,你就要看看具体数据库的语法。
      

  3.   

    数据库是:SQL Server2000 因为现在A表中数据已经有了, 临时加的B 表,所以不在程序中实现。本人对数据库一知半解,更别提优化方面的了 实现就行  嘿嘿! 最好是批量的那种  (能批量导数据到A表然后完成插入到B表的任务)
      

  4.   

    如果A表数据已经有了道理是一样的,在一个事务中,从A表中查出来,分隔一下,然后插入到B表中就结束了,增加代码也就几行,用得着用触发器么,搞得太复杂了。
      

  5.   

    事务控制怎么做  触发器怎么做  程序怎么实现  程序为asp   只要随便一样能实现就行    我觉的触发器要简单点嘛  怎么会说复杂了呢
      

  6.   

    我在我oracle里写个针对deapartment_25和employee表的.懒得建表了.
    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;
      

  7.   

    此题已由 昨夜小楼在数据库sql应用版块解决  结帖