不是的,你写的太不具体了,就放一个文件在那,也不说报的什么错误,大家怎么知道,是什么事情呀? 我初步看了一下,感觉是 1、where (书稿编审校流程.承印厂=NULL) AND (书号 IN @书号 ) 中的IN 有问题,应该改为‘=’; 2、既然只有在UPDATE时才发生,在 FOR INSERT, UPDATE 就不应包括INSERT 3、还有你的SQL中,更新多条就会只按照最后的那条记录更新“书稿编审校流程 ”的。 ----------------------------------------------------------------------
看来看去,感觉还是有些糊涂, 1、select @factory=承印厂 from inserted 2、SELECT @书号=印刷计划表头.书号 from 印刷计划表头,印刷计划表5 where 印刷计划表头.编号= 印刷计划表5.编号 1句取数据来自INSETED表, 2句却与INSERTED无关, 这样的话,你更新的数据不会出现偏差吗?
看来 六子儿 你是花心思看了,谢谢,即使问题解决不了,我也给你分了。我不希望人看都不看就唧唧歪歪。下面是我的疑问,烦请你解答一下。 我的本意是 书号 IN @书号 但@书号是最后一个记录呀,我是想取满足条件的一堆记录s. 我不会写此语句。
CREATE TRIGGER [tr_书稿编审校流程] ON [dbo].[印刷计划表5] FOR UPDATE AS begin if update(审核状态) begin declare @factory as varchar(50)select @factory=承印厂 from inserted SELECT 印刷计划表头.书号 into #tab from 印刷计划表头,印刷计划表5 where 印刷计划表头.编号= 印刷计划表5.编号 update 书稿编审校流程 set 书稿编审校流程.承印厂= @factory where (书稿编审校流程.承印厂=NULL) AND (书号 IN (select * from #tab) ) end end
我初步看了一下,感觉是
1、where (书稿编审校流程.承印厂=NULL) AND (书号 IN @书号 )
中的IN 有问题,应该改为‘=’;
2、既然只有在UPDATE时才发生,在
FOR INSERT, UPDATE
就不应包括INSERT
3、还有你的SQL中,更新多条就会只按照最后的那条记录更新“书稿编审校流程 ”的。
----------------------------------------------------------------------
1、select @factory=承印厂 from inserted
2、SELECT @书号=印刷计划表头.书号 from 印刷计划表头,印刷计划表5
where 印刷计划表头.编号= 印刷计划表5.编号
1句取数据来自INSETED表,
2句却与INSERTED无关,
这样的话,你更新的数据不会出现偏差吗?
我的本意是
书号 IN @书号 但@书号是最后一个记录呀,我是想取满足条件的一堆记录s. 我不会写此语句。
FOR UPDATE
AS
begin
if update(审核状态)
begin
declare @factory as varchar(50)select @factory=承印厂 from inserted
SELECT 印刷计划表头.书号 into #tab from 印刷计划表头,印刷计划表5
where 印刷计划表头.编号= 印刷计划表5.编号
update 书稿编审校流程
set 书稿编审校流程.承印厂= @factory
where (书稿编审校流程.承印厂=NULL) AND (书号 IN (select * from #tab) )
end
end