Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Получаване на актуализиран ред

В зависимост от това, което правите, може да се наложи да използвате синтаксиса на таблицата на OUTPUT . Възможност е да посочите временна таблица/променлива на таблица.

DECLARE @T TABLE
(
    MyID INT NOT NULL
)

UPDATE Task
SET MyTime = GetDate(), MyUserId = @userid
OUTPUT INSERTED.MyID INTO @T
FROM (/* your FROM clause here */) Task

gbn получи редакция пред мен, която по същество казва същото като по-горе. Бих искал да добавя, че друг начин да направите това е първо да вземете ID и след това да актуализирате по ID. Също така ТОП 1 почти винаги трябва да се използва с ORDER BY .

-- You may need to clean up the error handling. I just wanted
-- to put something simple in to remind that it is necessary.
DECLARE @userid INT; SET @userid = /* e.g., */ 1234
BEGIN TRANSACTION
IF @@ERROR <> 0 RETURN
DECLARE @TaskID INT
SET @TaskID = (SELECT TOP 1 TaskID FROM Task WITH (UPDLOCK) ORDER BY /* e.g., */ TaskID) -- TaskID should be the PK of MyTable. Must be unique.
IF @@ERROR <> 0 BEGIN ROLLBACK TRANSACTION RETURN END
UPDATE Task
SET MyTime = GETDATE(), MyUserId = @userid
WHERE TaskID = @TaskID
COMMIT TRANSACTION


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв тип данни трябва да се използва за съхраняване на телефонни номера в SQL Server 2005?

  2. Неуспешна JDBC връзка, грешка:TCP/IP връзката с хост неуспешна

  3. Как да игнорирате грешка при дублиран ключ в T-SQL (SQL сървър)

  4. Възстановете база данни в SQL Server 2017

  5. SQL Server Resumable Index:Добре ли е за вас?