隐式事务期间的SQL Server存储值

时间:2014-09-17 14:19:59

标签: sql sql-server

我必须重新调整现有程序处理数据库的方式。

之前,我正在连续使用odbc_php执行语句 E.g
SELECT [Value1] FROM TABLE保存到$value1
INSERT INTO TABLE2 (VALUE2) VALUES ('$value1')
UPDATE TABLE SET [Value1] = '" . $value1 + 1 . "'

你明白了。

但是我相信这种运行语句的方式会导致与其他用户的冲突。数据库。

我的解决方案是将语句作为隐式事务运行,但是我需要保存值和&在此次交易中重复使用。

所以,如何从MSSQL中的select语句中保存值? (我的技能对于MSSQL来说并不理想,因此任何好的教程或帮助文档都是适用的)

2 个答案:

答案 0 :(得分:1)

处理并发尝试命中这一系列命令时遇到一些问题。鉴于:

  1. 您希望Table2为每个递增的value1
  2. 都有一个条目

    1. 您希望Table1在每次执行时将value1递增1。
    2. 在这种情况下,我认为您需要先更新Table1,然后在更新之前将原始值插入table2,确保它保持连续:

      DECLARE @UpdatedVal TABLE (InsertVal INT)
      
      UPDATE Table1 
      SET Value1 = (Value1 + 1)
      OUTPUT INSERTED.Value1 
              INTO @InsertedVal
      
      INSERT INTO Table2 (VALUE2)     
      VALUES ((SELECT(InsertVal - 1) FROM @UpdatedVal)
      
      GO
      

答案 1 :(得分:0)

一个例子:

declare @value int <\or any datatype>  --create a variable

select @value = value1
  from table  --set the value

insert into table2 (value2) values(@value) --insert it