wodeqq584958184
wodeqq584958184
采纳率77.8%
2018-06-13 07:44 阅读 710

关于SQL server 2008 触发器 的问题

40

如题,我现在在table4里建立个触发器,想从MachineStatus表里读取插入时的数据,符合条件则
插入数据到table4,可为什么触发器好像并没有读取到MachineStatus表里插入的数据呢
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • 已采纳
    showbo GoCityPass新加坡曼谷通票 2018-06-13 09:58

    没问题吧。。你怎么知道查询不到值?

    你2个排序不一样,第一个没有orderby会按照添加的先后顺序,另外一个是按照itime,排序最好统一起来

    点赞 评论 复制链接分享
  • wodeqq584958184 wodeqq584958184 2018-06-13 07:55

    刚刚试验了下,如果把@变量取消,直接select top 1 status,itime,kid的话,是能查询到数据的,但为什么加上@变量就不行了呢,这样的话我就无法实现插入数据到table4的条件了

    点赞 评论 复制链接分享
  • weixin_41171585 weixin_41171585 2018-06-13 09:07

    图片说明 这样就是可以的啊

    点赞 评论 复制链接分享
  • wodeqq584958184 wodeqq584958184 2018-06-13 09:24

    但是如果没有@变量的话,我就不能实现新数据与上一条数据,两条数据作比较的效果了,我是想实现插入的数据与上一条插入的数据做比较判断,如果
    上一条数据的status字段为0,新插入的数据的status字段是非0值,则把这两条数据记录往table4插入

    点赞 评论 复制链接分享
  • wodeqq584958184 wodeqq584958184 2018-06-13 09:37

    select top 1 @oldStatus = status from MachineStatus where kid <>@minid order by itime ASC 这句代码是旧数据记录赋值 接下来就是判断新纪录
    与旧记录的比较,判断是否从0变为非0或者是非0变为0才执行

    点赞 评论 复制链接分享
  • wodeqq584958184 wodeqq584958184 2018-06-14 01:37

    图片说明

    插入的MachineStatus表的记录
    图片说明

    可table4一条记录都没有。。。。为什么会这样,难道是我触发器哪的逻辑还有错??
    图片说明

    点赞 评论 复制链接分享
  • wodeqq584958184 wodeqq584958184 2018-06-14 02:11

    真的奇怪了,最新的值是0,旧的记录值为1,没错啊,可为什么记录没有插入去table4呢??0.0
    图片说明

    点赞 评论 复制链接分享

相关推荐