1表:pub_档案
字段:
xyid,成绩,状态,分类
2表:考试档案
字段:成绩,状态,id
3表:实习档案
字段:成绩,状态,id要求:表1中的成绩更新时,如果分类是1就更新表2中相对应记录的成绩和状态,如果是2就更新表3中相对应记录的成绩和状态。注明:表1中的分类只是1和2。

解决方案 »

  1.   

    表1中的xyid与表2和表3中的id 是相关联的。
      

  2.   

    tryCreate Trigger Update_TR On pub_档案
    For Update
    As
    Begin
    If Update(成绩)
    Begin
    Update B Set 成绩 = A.成绩, 状态 = A.状态 From Inserted A Inner Join 考试档案 B On A.xyid = B.id Where A.分类 = 1
    Update B Set 成绩 = A.成绩, 状态 = A.状态 From Inserted A Inner Join 实习档案 B On A.xyid = B.id Where A.分类 = 2
    End
    End
      

  3.   

    --建立測試環境
    Create Table pub_档案
    (xyid Int,
     成绩 Int,
     状态 Int,
     分类 Int)Create Table 考试档案
    (成绩 Int,
     状态 Int,
     id Int)Create Table 实习档案
    (成绩 Int,
     状态 Int,
     id Int)
    GO
    --插入數據
    Insert pub_档案
    Select 1, 0, 1, 1
    Union All Select 2, 0, 1, 2
    Union All Select 3, 0, 1, 2Insert 考试档案 Select 0, 1, 1
    Insert 实习档案 Select 0, 1, 2
    Union All Select 0, 1, 3
    GO
    --建立觸發器
    Create Trigger Update_TR On pub_档案
    For Update
    As
    Begin
    If Update(成绩)
    Begin
    Update B Set 成绩 = A.成绩, 状态 = A.状态 From Inserted A Inner Join 考试档案 B On A.xyid = B.id Where A.分类 = 1
    Update B Set 成绩 = A.成绩, 状态 = A.状态 From Inserted A Inner Join 实习档案 B On A.xyid = B.id Where A.分类 = 2
    End
    End
    GO
    --測試
    Update pub_档案 Set 成绩 = (Case 分类 When 1 Then 80 Else 90 End)Select * From 考试档案
    Select * From 实习档案
    GO
    --刪除測試環境
    Drop Table pub_档案, 考试档案, 实习档案
    --結果
    /*
    成绩 状态 id
    80 1 1成绩 状态 id
    90 1 2
    90 1 3
    */
      

  4.   

    LCAAA(风) ( ) 信誉:100    Blog  2007-03-09 10:47:04  得分: 0  
     
     
       不对呀
    提示  列名  成绩  无效。
    您能给解释一下   A  和  B 是什么意思吗
      
     
    ---------
    “提示  列名  成绩  无效。”,你的表中有沒有“成绩”這一列,將其改為你的實際的列名。“您能给解释一下   A  和  B 是什么意思吗”, A, B只是表的表名.