触发器,PURTB表的TB025 由N 变Y 时执行,执行时,判断字段TB030是否为空,为空,回滚!
如果不为空,继续判断,TB030在表COPTD是否存在,不存在,回滚
继续判断,TB030在表PURTD中是否存在,存在,回滚
以下代码老是不起作用,有问题,请高手改一下,谢谢!
CREATE TRIGGER TR_INSERTPURTB2 ON [dbo].[PURTB]
FOR UPDATE
AS
DECLARE @TB001 CHAR(10), --销货单单别
@TB002 CHAR(11), --销货单单号
@TB003 CHAR(10), --销货单序号
@TB004 CHAR(20),
@TB025 CHAR(2),
@TB0252 CHAR(2),
@TB029 CHAR(20), --请购参考单别
@TB030 CHAR(20), --请购参考单号
@TB031 CHAR(20), --请购参考序号
@TD021 CHAR(20), --采购参考单号
@TD013 CHAR(20), --采购参考单别
@TD023 CHAR(20), --采购参考序号
@TD001 CHAR(20), --销售单别
@TD002 CHAR(20),
@TD003 CHAR(20)
BEGIN TRANSACTION
set nocount on --将影响资料笔数的计数器关掉
SELECT @TB001=TB001,@TB002=TB002,@TB003=TB003,@TB004=TB004,@TB025=TB025,@TB029=TB029
,@TB030=TB030,@TB031=TB031 FROM DELETED
SELECT @TB0252=TB025 FROM INSERTED
SELECT @TD021=TD021,@TD023=TD023 FROM PURTD WHERE TD021=@TB030 AND TD013=@TB029
AND TD023=@TB031
SELECT @TD001=TD001,@TD002=TD002,@TD003=TD003 FROM COPTD
WHERE TD001=@TB029 AND TD002=@TB030 AND TD003=@TB031
if @TB025='N' AND @TB0252='Y' AND @TB001='3101' and @TB030=''
BEGIN
ROLLBACK TRANSACTION
RAISERROR ('注意,物料单价不能为零,请供应商找采购小杨、财务虞会计把价格协商好再来办理入库手续,有不便的地方还请谅解,谢谢。泛亚汽车
! : %s.',16,1)
END
IF @TD021<>'' AND @TB025='N' AND @TB0252='Y' AND @TB001='3101'
BEGIN
ROLLBACK TRANSACTION
RAISERROR ('注意,参考单号已经存在于采购单中,这是多采购,请总经理审核
! : %s.',16,1)
END
IF @TD002='' AND @TB025='N' AND @TB0252='Y' AND @TB001='3101'
BEGIN
ROLLBACK TRANSACTION
RAISERROR ('注意,参考单号,在销售订单中不存在,请核对好本批料对应的销售订单,重新输入正确的参考单号
! : %s.',16,1)
END
set nocount off --将影响资料笔数的计数器再重新打开
COMMIT TRANSACTION