需要等待SQL中的特定列状态更改

需要等待SQL中的特定列状态更改,sql,sql-server,Sql,Sql Server,我需要检查表中某一列的状态更改 我可以使用while循环来实现,在这里我可以获取列值并检查值,如果值发生更改,则从循环中断。 我正在使用SQLServer2008。 有更好的办法吗 下面是示例sql查询 declare @status int = 1 select @status = status from MyTable with (nolock) where Id = 100034 while @status <> 3 begin WAIT

我需要检查表中某一列的状态更改 我可以使用while循环来实现,在这里我可以获取列值并检查值,如果值发生更改,则从循环中断。 我正在使用SQLServer2008。 有更好的办法吗

下面是示例sql查询

   declare @status int = 1

   select @status = status from MyTable with (nolock) where Id = 100034

   while @status <> 3
   begin
      WAITFOR DELAY '00:01'
      select @status = status from MyTable with (nolock) where Id = 100034
   end
declare@status int=1
从MyTable(nolock)中选择@status=status,其中Id=100034
而@status 3
开始
等待延迟'00:01'
从MyTable(nolock)中选择@status=status,其中Id=100034
结束

您是否考虑过使用触发器而不是存储过程?这正是触发器的作用

CREATE TRIGGER reactOnStatus3
ON MyTable
AFTER INSERT, UPDATE, DELETE 
AS
BEGIN
  IF Status = 3
     EXEC DoTheMagicStoredProcedure;
END;

可以显示到目前为止编写的查询吗?可以使用触发器,请参见此处:“看到”此更改时需要执行什么操作?最好的方法是使用触发器,但这取决于看到此值后要执行的操作是否在SQL Server内部。如果您需要在外部执行某些操作(例如刷新应用程序的屏幕),则唯一的选项是计时器,其中包含对DB inside的查询以检查该值。@ericpap这不是唯一的选项,查询通知将是另一个选项。尽管我怀疑他们会在变革完成之前开火。因此不等于
nolock