插入触发器为问题

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')条件的!
请高手指正
...全文
80 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgsasd311 2005-09-15
  • 打赏
  • 举报
回复
select @CardID=reqdata from Inserted
select @cardtime=SignTime from Inserted
------只能是一条一条地插才行,如果是一次性插了一批数据,那么就得不到正确的结果,你只要试一次,插一条记录来触发此触发器,和一次插一批记录来触发此触发器比较结果就知道了,你直接为变量赋值就等于一次插一条记录情况。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧