Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan Baris yang Diperbarui

Bergantung pada apa yang Anda lakukan, Anda mungkin perlu menggunakan sintaks tabel OUTPUT . Kemungkinannya adalah menentukan tabel / variabel tabel sementara.

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 mendapat suntingan di depan saya yang pada dasarnya mengatakan hal yang sama seperti di atas. Saya ingin menambahkan bahwa cara lain untuk melakukan ini adalah dengan mengambil ID terlebih dahulu dan kemudian memperbarui dengan ID. Juga, TOP 1 harus hampir selalu digunakan dengan 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. Cara Membuat Script Untuk Mengaktifkan Semua Batasan Kunci Asing di Database SQL Server - Tutorial SQL Server / TSQL Bagian 78

  2. LEFT JOIN vs. LEFT OUTER JOIN di SQL Server

  3. Bagaimana cara terhubung ke MS SQL Server menggunakan Inno Setup?

  4. Masuk ke Microsoft SQL Server Kesalahan:18456

  5. SQL Server Ubah Nama Basis Data