SORRY 上面写错了
,另一个是 
storenum 
merchID(char) (P)
snum(int) 

解决方案 »

  1.   

    --TRY
    CREATE TRIGGER TRI_INSERT ON importbill
    FOR INSERT
    AS 
      DELETE storenum FROM INSERTED I WHERE storenum.merchID=I.merchID
      INSERT storenum SELECT merchID,COUNT(*)CNT FROM importbill IM,INSERTED I 
      WHERE IM.merchID=I.merchID
      

  2.   

    --storenum这个表主要是为了统计importbill表中 merchID  对应的num(int) 的数目 
    --是求和还是求个数
    --如果是求和 则
    --修改
    INSERT storenum SELECT merchID,sum(num)CNT FROM importbill IM,INSERTED I 
      WHERE IM.merchID=I.merchID
      

  3.   

    哥呀  你这个 INSERTED I  是什么东东?????? 我 照你 代码 写成 这样
    ALTER TRIGGER [kcpd]
       ON  [dbo].[ImportBill]
    for INSERT
    ASDELETE StoreBill FROM INSERTED I WHERE storenum.merchID=I.merchID
    INSERT   into  StoreBill  values(I.merchID,(select SUM(quantity) from ImportBill where merchID=I.merchID )) 

    可能 我写触发器不是特别成熟  但是 我有点看不懂  你写的  INSERT  的意思 INSERT 的语法 不是  INSERT INTO TABLE  VALUES()吗
      

  4.   

    INSERT TB(ID ,[NAME])VALUES('A','B')
    --等价
    INSERT TB(ID ,[NAME]) SELECT 'A','B'
      

  5.   

    哥  小弟   又 根据 您的 思想自己设计了一个  虽然 没通过  但是 我觉得应该可以
    您指点下
    ALTER TRIGGER [kcpd]
       ON  [dbo].[ImportBill]
    for INSERT
    AS
    DECLARE @mid=(SELECT  merchID  from ImportBill where ImID=(select MAX(ImID) from ImportBill) )
    DELETE  FROM   StoreBill WHERE merchID=@mid
    INSERT   into  StoreBill  values(@mid,(select SUM(quantity) from ImportBill where merchID=@mid )) 

    我是这么想的 他不插进一列 然后 触发 触发器吗  那么我就找   mid(最大的因为他是自动增长的)对应 的merchID
    有了 这个  merchID  一切都好说了
    后面你说要删除 要插入的 都可以根据这儿 @mid  去搞定 但是 我这只是思路写的不对  不知道可行吗  我觉得 现在问题不是别的  主要是 能够找到 我插入这列的 merchID  的 值是多少
      

  6.   

    DELETE storenum FROM INSERTED I WHERE storenum.merchID=I.merchID 为什么还delete?
      

  7.   

    DECLARE @mid=(SELECT  merchID  from ImportBill where ImID=(select MAX(ImID) from ImportBill) ) 
    --> 先定义才能使用
    DECLARE @mid int
    select @mid =merchid from ImportBill order by ImID desc
      

  8.   

    我的理解是storenum 作为统计用的,一个merchID只有一笔记录
    importbill 只要增加 storenum 中的数据就会改变,所以先删除,然后重新统计插入
      

  9.   

    哥  触发器 到时通过了 但是通过测试 效果不佳  内个 专门统计  数量的 表  的 merchID 怎么插入的时候 只剩下 1位  而且  数量是NULL 费解ALTER TRIGGER [kcpd]
       ON  [dbo].[ImportBill]
    for INSERT
    AS
    DECLARE @mid varchar,@num int
    set @mid=(SELECT  merchID  from ImportBill where ImID=(select MAX(ImID) from ImportBill) )
    set @num=(select SUM(quantity) from ImportBill where merchID=@mid )
    DELETE  FROM   StoreBill WHERE merchID=@mid
    INSERT   into  StoreBill  values(@mid,@num) 
    我也不知道错在哪了  帮我看下吧
    楼上 那位 哥 理解的 十分贴切
      

  10.   

    --try
    ALTER TRIGGER [kcpd] 
      ON  [dbo].[ImportBill] 
    for INSERT 
    AS 
    DECLARE @mid varchar(30),@num int --定义字符要指定长度,如不指定默认为1 
    set @mid=(SELECT  merchID  from ImportBill where ImID=(select MAX(ImID) from ImportBill) ) 
    set @num=(select SUM(quantity)quantity from ImportBill where merchID=@mid ) 
    DELETE  FROM  StoreBill WHERE merchID=@mid 
    INSERT  into  StoreBill  values(@mid,@num) 
      

  11.   

    哥  我 知道 问题出哪了  就出在    @num  int 上了 但是  int  怎么指定长度啊   不能是int(10) 应该怎么写呀  
      

  12.   

    --TRY
    ALTER TRIGGER [kcpd] 
      ON  [dbo].[ImportBill] 
    for INSERT 
    AS 
    DELETE  FROM  StoreBill FROM INSERTED I WHERE StoreBill.merchID=I.merchID
    INSERT StoreBill SELECT merchID,SUM(quantity)CNT FROM importbill IM,INSERTED I 
    WHERE IM.merchID=I.merchID GROUP BY merchID
      

  13.   

    哥  呀  ,怎么说呀, 我真是如果我是一个女的我一定爱死你了,太谢谢你了,还有个问题就是 这个事 INSERT 
    如果 improtbill  被更新了 也就是说原来的quantity  被另一个触发器 触发 修改了 那么我也要相应的去 修改
     我的StoreBill的 信息
    INSERT  我是用 了 查询  mid  最大的方式获得的 merchID 
    如果 是表被更新了 我该怎么去找 这个 
    merchID 呢?????我现在很没有头绪,这相当于 另一种解决思路   哥 你有办法吗??
      

  14.   

    其实你这个要考虑三种情况了
    1,删除了  for delete
    2,插入了  for insert
    3,更新了  for update
    分别写对应触发器,
    或者写成一个触发器,在里面判断,是插入了,还是删除了,还是更新了 
      

  15.   

    CREATE TRIGGER TRI_INSERT ON importbill
    instead of INSERT
    AS 
      if exists(select 1 from inserted i,storenum a where i.merchID = a.merchID )
          raiserror(....)
      else
      begin
          insert importbill(merchID,num) select merchID,snum from inserted
          INSERT storenum SELECT merchID,snum FROM  INSERTED --主键自己生成
      end
    go
       
      

  16.   

    哥  呀  我有思路了 , 就是 其实 我没有说全  我这个表呢improtbill 是进货信息 StoreBill 是 库存盘点 还有一个表式 salebill是 销售清单
    是这样一个流程  salebill 销售了多少东西一保存 就自动的触发   进货信息 中的 quantity 让他的数量 变成   (quantity-销售的数量)
    这样呢  我可以再写个触发器在 salebill 如果 插入新纪录  那么 StoreBill 的merchID 对应的 snum  也去 减去 这个销售的数量 这样就达到的更新的目的了 哥  真是太谢谢你了   谢谢你花这么长 时间 给我解决 这个问题,我现在思路清楚了, 我没有什么可以回报的  这 100分全送给你  你人真是太好了 太谢谢你了