SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'TRGSalOrder' AND type = 'TR')
   DROP TRIGGER TRGSalOrder
GO
create  TRIGGER TRGSalOrder
ON TF_POS
FOR INSERT, UPDATE
AS
DECLARE @Order_QTY int,@QTY int,
   @sWH varchar(20)
select @sWH=WH from INSERTED
select @QTY=QTY from INSERTEDSELECT @Order_QTY = sum(t.QTY) FROM MF_POS m join TF_POS t on m.OS_ID=t.OS_ID and m.OS_NO=t.OS_NO 
where m.USR='0001'
set @Order_QTY=@Order_QTY+@QTYIF (@sWH = '0000')
BEGIN
   RAISERROR ('库位不能为0000.', 16, 1)
   ROLLBACK TRANSACTION
END
else
IF (@Order_QTY > 1000)
BEGIN
   RAISERROR ('订单数量不能大于1000.', 16, 1)
   ROLLBACK TRANSACTION
ENDGO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO为什么打开TRIGGER 看不到这段代码呢?老大非要我重写?编辑就看不到下面的代码?我晕了!
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'TRGSalOrder' AND type = 'TR')
   DROP TRIGGER TRGSalOrder

解决方案 »

  1.   

    是看不到的
    你把它
    生成sql指令代碼就可以看見了
      

  2.   

    右键点击本触发器依赖的表-->所有任务-->生成SQL脚本-->设置格式(勾上一二项)-->选项(勾上编写触发器脚本)-->常规(点击预览),如果要生成sql脚本就直接点最下面的确定
      

  3.   

    好象IF EXISTS (SELECT name FROM sysobjects....是人为写的,它跟脚本生成的结果不一样
      

  4.   

    IF EXISTS (SELECT name FROM sysobjects
          WHERE name = 'TRGSalOrder' AND type = 'TR')
       DROP TRIGGER TRGSalOrder
    上面那段代码的意识就是
      在你新建触发器之前
      如果你已经有 TRGSslOrder这个触发器
      就删除这个触发器
      

  5.   

    意思我知道,就是我写了,生成的时候,那段(IF EXISTS (SELECT name FROM sysobjects
          WHERE name = 'TRGSalOrder' AND type = 'TR')
       DROP TRIGGER TRGSalOrder) 代码就不见了
      

  6.   

    触发器只保留CREATE TRIGGER AS BEGIN END之间的代码
    你前面写的IF EXISTS ....这是不会保存在TRIGGER只中的
    你可以把整个语句保存在脚本里