解决方案 »

  1.   

    我刚解答了一个帖子,你可以看看游标是如何用的
    http://bbs.csdn.net/topics/390887609?page=1#post-398198791触发器的请看我的博文
    http://blog.csdn.net/dotnetstudio/article/details/10396439
      

  2.   

    举个例子吧,下面这个例子是插入A表的数据,如果customer_id='0001',我就把该条数据另外插入到另外B表中.你可以根据自己的需求修改条件即下面脚本触发器游标中间处理部分。USE TEST
    GO
    CREATE  TABLE dbo.A
    (
     tran_no char(5) null,
     part_id char(4)  null,
     quantity int   null,
     unit_price decimal(10,2) null,
     customer_id  char(4) null
    )
    CREATE  TABLE dbo.B
    (
     tran_no char(5) null,
     part_id char(4)  null,
     quantity int   null,
     unit_price decimal(10,2) null,
     customer_id  char(4) null,
     editdate datetime null
    )GO
    CREATE  TRIGGER INSERT_A
    ON DBO.A
    AFTER INSERT
    AS
    DECLARE @inserted_tran_no CHAR(5),@inserted_part_id CHAR(4)
    DECLARE @inserted_quantity INT
    DECLARE @inserted_unit_price DECIMAL(10,2)
    DECLARE @inserted_customerid CHAR(4)DECLARE my_cursor CURSOR 
            LOCAL 
            STATIC 
            FORWARD_ONLY 
            READ_ONLY 
    FOR  SELECT inserted.tran_no,inserted.part_id,inserted.quantity,inserted.unit_price,inserted.customer_id
    FROM insertedOPEN my_cursor
    FETCH NEXT FROM my_cursor INTO @inserted_tran_no,@inserted_part_id,@inserted_quantity,@inserted_unit_price,@inserted_customerid 
    WHILE @@fetch_status = 0      
    BEGIN  
      IF  @inserted_customerid = '0001'
      BEGIN
      INSERT INTO dbo.B(tran_no,part_id,quantity,unit_price,customer_id,editdate)
      SELECT @inserted_tran_no, @inserted_part_id,@inserted_quantity,@inserted_unit_price,@inserted_customerid,getdate() 
      END 
    FETCH NEXT FROM my_cursor INTO @inserted_tran_no,@inserted_part_id,@inserted_quantity,@inserted_unit_price,@inserted_customerid 
    END  
    CLOSE my_cursor      
    DEALLOCATE my_cursorGO
    INSERT INTO dbo.A
    SELECT '00001','0001',20,12.3,'0000'
    UNION ALL
    SELECT '00001','0001',20,12.3,'0001'
    UNION ALL
    SELECT '00001','0001',20,12.3,'0002'
    UNION ALL
    SELECT '00002','0001',20,12.3,'0001'
    UNION ALL
    SELECT '00005','0001',20,12.3,'0001'
    UNION ALL
    SELECT '00005','0001',20,12.3,'0003'
    GO
    SELECT * FROM DBO.A
    SELECT * FROM DBO.B