Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để SCOPE_IDENTITY trả về giá trị rỗng khi @@ IDENTITY không trả về?

đây là một ví dụ về cách SCOPE_IDENTITY () sẽ rỗng nhưng @@ IDENTITY sẽ có giá trị:

FYI, có một lỗi đã biết với SCOPE_IDENTITY (): https:/ /connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=328811

Đặt cược tốt nhất của bạn với các danh tính là sử dụng OUTPUT INTO, nó có thể nắm bắt một tập hợp các ID và không bị lỗi 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. Mệnh đề OrderBy dẫn đến các tập kết quả khác nhau khi cột đặt hàng có cùng dữ liệu

  2. Trạng thái HTTP 500 - Môi trường thời gian chạy Java (JRE) phiên bản 1.7 không được trình điều khiển này hỗ trợ

  3. Tại sao truy vấn con (không tương quan) này lại gây ra sự cố như vậy?

  4. Sử dụng SMO để sao chép cơ sở dữ liệu và dữ liệu

  5. sql server 2008 - hằng số không phải là số nguyên trong Mệnh đề ORDER BY