delete from shopclass where parentid in (select id from deleted)parentid保存他父级的id

解决方案 »

  1.   

    给你个例子
    当前数据库中有“uMateriel”和“uRecord”两张表,他们分别用来保存物品信息和物品的出入库记录信息,结构如下
    引用:
    uMateriel
    ----------------
    mId   int
    mName  nvarchar(40)
    mNum   int DEFAULT 0uRecord
    ----------------
    rId   int
    mId   int
    rNum   int
    rDate  datetime DEFAULT GetDate()
    rMode  bit DEFAULT 0好了,数据表已经有了,现在看一下实际的应用。
    现在,我们要购入物品A,数量100,时间为当天,已知物品A的编号为1,那么通常我们需要做以下两个步骤:
    引用:
    1、在 uRecord 记录表中增加一条物品A的购入记录:
      INSERT INTO uRecord (mId, rNum, rMode) VALUES (1, 100, 0)
    2、更新 uMateriel 物品库存表中物品A的数量:
      UPDATE uMateriel SET mNum = mNum + 100 WHERE mId=1
     
    现在根据上面的语法我们建立一个触发器(注意一点,触发器是附于一张表或视图的,所以只能在表里建立或在查询分析器里建立),这个触发器的功能就是自动更新库存数量--------------------------------------------------------------------------------
    引用:
    CREATE TRIGGER [trUpdateMaterielNum] ON [dbo].[uRecord] 
    -- 表明在插入记录之后执行这个触发器
    AFTER INSERT
    AS
    -- 当前更新的编号
    DECLARE @intID                int
    -- 当前更新的数量
    DECLARE @intNum        int
    -- 当前模式
    DECLARE @intMode        int
    -- 判断是否有记录录被更新,@@ROWCOUNT是系统函数,返回受上一语句影响的行数。
    IF @@ROWCOUNT >0
    BEGIN
            -- 取得当前插入的物品编号和数量,Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。
            SELECT @intID=mId,@intNum=rNum,@intMode=rMode FROM Inserted        -- 判断当前模式(0为入库,1为出库)来更新当前物品的数量
            IF @intMode = 0
                    UPDATE uMateriel SET mNum = mNum + @intNum WHERE mId=@intID
            ELSE
                    UPDATE uMateriel SET mNum = mNum - @intNum WHERE mId=@intID
    END