sql2005 触发器问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:59:46
我在数据库里,在表so_somain表中加了一个触发器,以下为触发器的内容,但在执行insert的时候无法触发还不知道触发了未成功,就是没有达到原有的效果,哪位大虾能帮忙解决下的,给于重分。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER TRIGGER [TR_somain] ON [dbo].[SO_SOMain]
for insert
as
begin

declare @soid int,@id int, @wuliuid varchar(50),@csccode varchar(50),@ordercode varchar(50)

select @id=idnum from d_tableid where tablename='SO_SOMain'

select top (1) @soid=soid from SO_SOMain order by dDate desc

WHILE @soid<@id
BEGIN
SET @soid = @soid +1
SELECT @ordercode = cSOCode FROM SO_SOMain WHERE soid = @soid
select @wuliuid = cDefine1,@csccode = cSCCode from dispatchlist where cSOCode = @ordercode
update SO_SOMain set cDefine1 = @wuliuid,cSCCode = @csccode where soid = @soid
END
end
我来解释一下我的用处
当插入一条记录的时候,需要获取另一个表中的其中两个字段,把这两个字段更新至第一个表中,但程序是死的,不能修改,只能利用触发器来进行update了。

先定义一些变量
declare @soi

楼上说的对,
取出最后一条insert到SO_SOMain 表中的数据ID(自动增长)
select top (1) @soid=soid from SO_SOMain order by dDate desc
是不需要这样的,应该是
select @soid=soid from inserted

语句好像没什么问题。不知道你要实现什么样的功能

SET @soid = @soid +1
这句是不是改放到update下面去哦!

--补充
提示下你这过程应该用到inserted表,不用这么复杂吧
还有把触发器改成after。
不然数据还没进去,就执行update。数据库表里就没反应了
ALTER TRIGGER [TR_somain] ON [dbo].[SO_SOMain]
after insert

时间来不急了。我得下班了。
如果明天早上还没解决。再帮你看