读书人

一个关于“触发器”的有关问题

发布时间: 2012-01-10 21:26:51 作者: rapoo

一个关于“触发器”的问题
我有两个表:
表1:exam_QuestionName
字段:QuestionCode TypeCode QuestionName QuestionNum(int)

表2:exam_QuestionType
字段:TypeCode SubjectCode TypeName QuestionNum(int)

要求:1.表1的QuestionNum字段值+1的时候,表2的QuestionNum也+1
2.表1的QuestionNum字段值-1的时候,表2的QuestionNum也-1
3.在SQLSever2000中实现
请大家帮帮我,谢谢!

[解决办法]
大体写了一个,我也是半学习半用,接触触发器比较少,经测试有效。

SQL code
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo-- =============================================-- Author:        brallow-- Create date: 2008-10-17-- Description:    Trigger Example For CSDN-- =============================================CREATE TRIGGER  [QUAutoCalc]   ON  [dbo].[exam_QuestionName]   AFTER INSERT,DELETE,UPDATEAS BEGIN    -- SET NOCOUNT ON added to prevent extra result sets from    -- interfering with SELECT statements.    SET NOCOUNT ON;    Declare @eQuestionCode as varchar(10);        Declare @eTypeCode as varchar(10);    Declare @eQuestionNum as int;      --处理删除的数据    select     @eQuestionCode= QuestionCode,    @eTypeCode = TypeCode,    @eQuestionNum=QuestionNum     from Deleted;    if(@eQuestionCode is not Null and @eTypeCode is not Null)        begin        update exam_QuestionType        set QuestionNum = QuestionNum - @eQuestionNum        where TypeCode = @eTypeCode;    end    --清空数据    set @eQuestionCode = Null;    set @eTypeCode = Null;    set @eQuestionNum = Null;    --处理插入的数据        select     @eQuestionCode= QuestionCode,    @eTypeCode = TypeCode,    @eQuestionNum=QuestionNum     from Inserted;    if(@eQuestionCode is not Null and @eTypeCode is not Null)        begin        update exam_QuestionType        set QuestionNum = QuestionNum + @eQuestionNum        where TypeCode = @eTypeCode;    endEND 

读书人网 >C#

热点推荐