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

Bagaimana SCOPE_IDENTITY dapat mengembalikan nol ketika @@IDENTITY tidak?

berikut adalah salah satu contoh bagaimana SCOPE_IDENTITY() akan menjadi null tetapi @@IDENTITY akan memiliki nilai:

FYI, ada bug yang diketahui dengan SCOPE_IDENTITY():https:// /connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=328811

Taruhan terbaik Anda dengan identitas adalah dengan menggunakan OUTPUT INTO, itu dapat menangkap satu set ID dan tidak tunduk pada bug SCOPE_IDENTITY():

declare @x table (tableID int identity not null primary key, datavalue varchar(10))
declare @y table (tableID int, datavalue varchar(10))

INSERT INTO @x values ('aaaa')
INSERT INTO @x values ('bbbb')
INSERT INTO @x values ('cccc')
INSERT INTO @x values ('dddd')
INSERT INTO @x values ('eeee')


INSERT INTO @x
    (datavalue)
    OUTPUT INSERTED.tableID, INSERTED.datavalue     --<<<<OUTPUT INTO SYNTAX
    INTO @y                                         --<<<<OUTPUT INTO SYNTAX
SELECT
    'value='+CONVERT(varchar(5),dt.NewValue)
    FROM (SELECT id as NewValue from sysobjects where id<20) dt
    ORDER BY dt.NewValue


select * from @x
select * from @y


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan nama server untuk SQL Server 2005

  2. SQL Query - Ubah format tanggal dalam kueri menjadi DD/MM/YYYY

  3. Konversikan ke karakter ASCII di server sql

  4. kirim xml ke sql

  5. Cara yang lebih elegan untuk keluar dari SQL dinamis?