表RKD (LSBH VARCHAR(50),
PJLX VARCHAR(10),
FLH VARCHAR(10),
WLBH VARCHAR(30),
SSSL VARCHAR(30),---入库单数量
RKDDLS VARCHAR(30),
RKDDFLH VARCHAR(30)
);
表DD2 (DDLSBH VARCHAR(50),
DDFLH VARCHAR(10),
DDWLBH VARCHAR(30),
DDSL VARCHAR(30),---订单数量
)
RKD.RKDDLS=DD2.DDLSBH
RKD.RKDDFLH=DD2.DDLSBH
现在要做一个触发器,就是表RKD在插入或者修改记录时,判断当RKD.PJLX='G'并且 字段RKDDLS 与RKDDFLH 对应DD2表中对应的DDLSBH 与DDFLH 时RKD.SSSL不能大于DD2.DDSL
请高手指点,谢谢了表RKD数据如下:
LSBH PJLX WLBH SSSL RKDDLS RKDDFLH
001 G 01001 10 101 00001
002 G 01003 20 101 00002
003 G 02018 18 110 00001表DD2数据如下:
DDLSBH DDFLH DDWLBH DDSL
101 00001 01001 10
101 00002 01003 25
110 00001 02018 20
PJLX VARCHAR(10),
FLH VARCHAR(10),
WLBH VARCHAR(30),
SSSL VARCHAR(30),---入库单数量
RKDDLS VARCHAR(30),
RKDDFLH VARCHAR(30)
);
表DD2 (DDLSBH VARCHAR(50),
DDFLH VARCHAR(10),
DDWLBH VARCHAR(30),
DDSL VARCHAR(30),---订单数量
)
RKD.RKDDLS=DD2.DDLSBH
RKD.RKDDFLH=DD2.DDLSBH
现在要做一个触发器,就是表RKD在插入或者修改记录时,判断当RKD.PJLX='G'并且 字段RKDDLS 与RKDDFLH 对应DD2表中对应的DDLSBH 与DDFLH 时RKD.SSSL不能大于DD2.DDSL
请高手指点,谢谢了表RKD数据如下:
LSBH PJLX WLBH SSSL RKDDLS RKDDFLH
001 G 01001 10 101 00001
002 G 01003 20 101 00002
003 G 02018 18 110 00001表DD2数据如下:
DDLSBH DDFLH DDWLBH DDSL
101 00001 01001 10
101 00002 01003 25
110 00001 02018 20
FOR INSERT
AS
BEGIN
DECLARE @PJLX VARCHAR(10)
DECLARE @RKDDLS VARCHAR(30)
DECLARE @RKDDFLH VARCHAR(30)
DECLARE @SSSL NUMERIC(20,10)
DECLARE @DDSL NUMERIC(20,10)
SELECT @PJLX=PJLX,@RKDDLS=RKDDLS,@RKDDFLH=RKDDFLH,@SSSL=SSSL FROM INSERTED
IF @PJLX='G'
BEGIN
SELECT @DDSL=DDSL FROM DD2 WHERE DDLSBH=@RKDDLS AND DDFLH=RKDDFLH
IF @SSSL>@DDSL
BEGIN
RAISERROR ('入库单数量不能大于订单数量', 16, 1)
END
END
ENDCREATE trigger RKD_UPDATE ON RKD
FOR UPDATE
AS
BEGIN
DECLARE @PJLX VARCHAR(10)
DECLARE @RKDDLS VARCHAR(30)
DECLARE @RKDDFLH VARCHAR(30)
DECLARE @SSSL NUMERIC(20,10)
DECLARE @DDSL NUMERIC(20,10)
SELECT @PJLX=PJLX,@RKDDLS=RKDDLS,@RKDDFLH=RKDDFLH,@SSSL=SSSL FROM INSERTED
IF @PJLX='G'
BEGIN
SELECT @DDSL=DDSL FROM DD2 WHERE DDLSBH=@RKDDLS AND DDFLH=RKDDFLH
IF @SSSL>@DDSL
BEGIN
RAISERROR ('入库单数量不能大于订单数量', 16, 1)
END
END
END
begin
-- do something
end
TRIGGER是运行在SQL服务上的,提示说明是看不到的,若前端是VC也不是从返回结果集里看到的,得从GETMORERESULT里吧好象。你把写一个表的TRIGGER用在多个表里就行了,都在SQL里怎么分你我?SQL里只分前世、现世和来世。