关于SQL server触发器代码问题,不知道哪里出问题了

说明:我现在三个表的关系是,table1插入的是机器状态(0为开机运行状态,非0为down机状态,也就是机器遇到报错了,有错误代码产生,引起机器故障停止)

table2是专门插入造成每次down机的错误代码,

table4是插入每次down机的时候,经过触发器筛选,将造成此次down机的最先报错的错误代码记录插入到table4中,筛选的条件是离table1中非0记录时间最近的错误代码。

我现在的触发器

图1

测试过程
(1) 先在table1中插入一条开机状态记录(状态为0的记录)
图2
(2) 在插入一条down机状态记录(状态为非0)
图3
(3) 可见table4的效果
图4
(4) 既然down机那就插入一条错误代码(table2暂时用tale2_1代替。)
图5

(5)插入后,再插入一条状态为0的记录,意味着机器恢复运行。
图6

(6)再去table4查看结果,发现刚刚插入table2-1表的数据按思路应该table4中会有错误代码的各个字段的的值,但我发现table2里面的错误代码location,pointer,itime等等,并没有把值传递给table4 的down机记录下。而是出现了一条空行记录。

图7

我想要的效果有了一半,但那条空行记录应该是location = 'sta010' pointer='10000 'ng-time = 'getdate()' 问题是出在哪里呢??请SQL 大神、专家帮我看看~~~
可以加Q详细说明:584958184

sp_helptext '触发器名'或select text from syscomments where ID= object_ID(N'触发器名')

逻辑错了。。。你记录的那个时间已经是修改时间了,然后你再去查询tb2表比这个时间大的。。。那不可能啊,本身触发器是线程安全的。。。。
tb2是比tb4执行慢的,这样操作你永远查不出数据的

sp_helptext '触发器名' select text from syscomments where ID= object_ID(N'触发器名')

语句错了 insert into 表名(列名) valuse (数据
)

触发器是线性操作的,建议你写两个触发器,第一个触发第二个,第二个触发第三个,系统会自动判断他们之间的完成情况