插入触发器为问题

anlun 2005-09-15 04:03:36
CREATE TRIGGER getphone on jxt_dataupld
for Insert
as
begin

declare @CardID as varchar(255),
@cardtime as varchar(50),
@cardtimeold as varchar(50),
@t1 as varchar(50),
@t2 as varchar(50)

select @cardtimeold=''
select @CardID=reqdata from Inserted
select @cardtime=SignTime from Inserted

--select @CardID='88800110050101'
--select @cardtime='20050915140001'

declare Cur1 CURSOR for select SignTime from jxt_dataupld where reqdata=@CardID ORDER BY DataID DESC
open Cur1
FETCH FROM Cur1 into
@cardtimeold
WHILE @@FETCH_STATUS=0
BEGIN


break

END
CLOSE Cur1



select @t1=Convert(SmallDateTime,Convert(Varchar(11),Convert(DateTime,Left(@cardtime,8)),120)+Stuff(Stuff(Right(@cardtime,6),3,0,':'),6,0,':'))
Select @t2=Convert(SmallDateTime,Convert(Varchar(11),Convert(DateTime,Left(@cardtimeold ,8)),120)+Stuff(Stuff(Right(@cardtimeold ,6),3,0,':'),6,0,':'))


if datediff(minute,@t2,@t1)>5
begin
INSERT INTO u values('123')

end

else
begin
print '1234'
end

end

如果直接对赋值就是对的
select @CardID='88800110050101'
select @cardtime='20050915140001'

但按我查入的取值后却不能执行到
INSERT INTO u values('123')

对表jxt_dataupld
插入的数据是满足执行INSERT INTO u values('123')条件的!
请高手指正
...全文
62 点赞 收藏 1
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wgsasd311 2005-09-15
select @CardID=reqdata from Inserted
select @cardtime=SignTime from Inserted
------只能是一条一条地插才行,如果是一次性插了一批数据,那么就得不到正确的结果,你只要试一次,插一条记录来触发此触发器,和一次插一批记录来触发此触发器比较结果就知道了,你直接为变量赋值就等于一次插一条记录情况。
回复
相关推荐
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2005-09-15 04:03
社区公告
暂无公告