从数据库读取标记列为0的,然后将读取后的这些列的标记列改为1
,存储过程怎么写

解决方案 »

  1.   

    update 表
    set 列=1
    where 列=0
      

  2.   


    -- SQL2000 的写法
    -- 先读出为0的记录并存入临时表
    SELECT * INTO #TMP FROM 表 WHERE 列 = 0
    -- 把0改为1,考虑到期间可能再有INSERT操作,所以这里与已读出的记录连接再UPDATE
    UPDATE B SET 列 = 1 
      FROM #TMP A
      INNER JOIN 表 B ON A.ID=B.ID-- SQL2005 的写法
    -- 建立一个相同结构的空表
    SELECT * INTO #TMP FROM 表 WHERE 1=2
    -- UPDATE的同时,把被更新的记录写入临时表中
    UPDATE 表 SET 列 = 1
      OUTPUT DELETED.* INTO #TMP
      WHERE 列 = 0