日期:2014-05-19  浏览次数:20521 次

??? 触发器攻关 ??? 大哥大姐,帮帮忙啊!
小弟只知道触发器是个好东西,但是从来没有自己写过,

早就听说CSDN里是高手云集,藏龙卧虎之地,故来请教!

问题如下:

A表:     字段如下
规格单号               小号     节目名称   订货数量     完成
HLOT-07-0001         1           征服1         1000           False
HLOT-07-0001         2           征服2         1000           False

B表:     字段如下
规格单号               小号     节目名称   订货数量     入库数量
HLOT-07-0001         1           征服1         1000           1000
HLOT-07-0001         2           征服2         1000           800

B表中的 "入库数量 "会不断改变,如果 "入库数量> =订货数量 "

就表明   A表中的相应 "节目 "的 "完成 "字段要赋值为 "True ".

实现要求:  
            (1)触发器只对 "入库数量 "的INSERT,UPDATE时起作用
            (2)B表的 "入库数量> =订货数量 "时自动更改相应A表 "完成=True "




------解决方案--------------------
我也在想,要怎么获取到 INSERT 或 UPDATE 受影响的行的值.那这个问题就好解决了
------解决方案--------------------
create trigger ti_B表 on B表
for insert,update
as
if exists(select * from inserted i where isnull(i.入库数量,0)> =isnull(i.订货数量,0))
begin
update A表
set 完成= 'True '
from A表,inserted i
where A表.规格单号=i.规格单号
and A表.小号=i.小号
and A表.节目名称=i.节目名称
and isnull(i.入库数量,0)> =isnull(i.订货数量,0)
end
------解决方案--------------------
你的意思是,你可以插入新的记录来修改征服1的数量,也可以直接在老的记录上增加?
------解决方案--------------------
规格单号 小号 节目名称 订货数量 入库数量
HLOT-07-0001 1 征服1 1000 1000
HLOT-07-0001 2 征服2 1000 800
HLOT-07-0001 2 征服2 1000 200

表2会不会有这样的情况?
------解决方案--------------------
检查inserted临时表中入库数量> =订货数量的

向表中insert时,新插入的数量保存在inserted表中
update表时,更新后的值保存在inserted表中
------解决方案--------------------
easywind8088() ( ) 信誉:100 Blog 2007-03-14 17:45:40 得分: 0


不会,
HLOT-07-0001 2 征服2 1000 800
HLOT-07-0001 2 征服2 1000 200

全合并为一条记录,如下

HLOT-07-0001 2 征服2 1000 1000


---------------------

應該會存在這種情況的,不會所有的東西一起入庫的,肯定會有今天入庫一部分,明天入庫一部分的情況。
------解决方案--------------------
楼主的表2中入库数量是一直加的?

不知道我这个对不对

if object_id( 'pubs..表A ') is not null
drop table pubs..表A
GO
CREATE TABLE 表A
(
规格 nvarchar(50),
小号 int,
订货数量 int,
完成 bit
)
INSERT INTO 表A SELECT 'HLOT-07-0001 ',1,1000,0
UNION ALL SELECT 'HLOT-07-0001 ',2,1000,0

if object_id( 'pubs..表B ') is not null
drop table pubs..表B
GO
CREATE TABLE 表B
(
规格 nvarchar(50),
小号 int,
订货数量 int,
入库数量 int