2014-04-08 18 views
9

@@IDENTITY trả về ID của hàng cuối cùng chèn, tôi muốn lấy ID của hàng cuối cùng cập nhật.Nhận Identity của Row Lần cập nhật cuối trong SQL Server

Đây là câu hỏi của tôi:

UPDATE [Table] 
SET Active = 1, 
    Subscribed = 1, 
    RenewDate = GETDATE(), 
    EndDate = DATEADD(mm,1,getdate()), 
WHERE SC = @SC 
    AND Service = @Ser 

Làm thế nào để có được ID của hàng cập nhật này?

Cột được gọi là TableID và tôi không sử dụng nó trong truy vấn.

+0

Làm thế nào về việc bắn một lựa chọn với cùng một mệnh đề where? – samar

Trả lời

10

Bạn không thể lấy một ID vì không có ID được chèn .....

Nhưng bạn có thể:

  1. chỉ cần truy vấn bảng bằng cách sử dụng các tiêu chuẩn tương tự như trong bạn UPDATE:

    SELECT TableID 
    FROM dbo.Table 
    WHERE SC = @SC AND Service = @Ser -- just use the same criteria 
    
  2. sử dụng mệnh đề OUTPUT trên UPDATE để nhận được thông tin rằng:

    UPDATE [Table] 
    SET Active = 1, 
        Subscribed = 1, 
        RenewDate = GETDATE(), 
        EndDate = DATEADD(mm,1,getdate()) 
    OUTPUT Inserted.TableId  -- output the TableID from the table 
    WHERE SC = @SC AND Service = @Ser 
    

Read more about the OUTPUT clause trên Technet - nó có thể được sử dụng trên INSERTDELETE cũng

6

bạn có thể thử sử dụng này:

OUTPUT INSERTED.TableID 

trong mã của bạn nó sẽ trông như thế này:

UPDATE [Table] 
    SET Active = 1, 
     Subscribed = 1, 
     RenewDate = GETDATE(), 
     EndDate = DATEADD(mm,1,getdate()), 
OUTPUT INSERTED.TableID 
    WHERE SC = @SC 
     AND Service = @Ser 

Hope this helps.

+1

Lưu ý rằng không có dấu phẩy trước OUTPUT –

2

Tôi đoán bạn cần cái này,

UPDATE [Table] 
SET Active = 1, 
    Subscribed = 1, 
    RenewDate = GETDATE(), 
    EndDate = DATEADD(mm,1,getdate()) 
    OUTPUT INSERTED.TABLE_PrimaryKeyID 
WHERE SC = @SC 
AND Service = @Ser 

nguồn chính: here

0

Thử sử dụng số chọn @@ danh tính được cập nhật lần cuối cho phiên cụ thể (hoặc) chọn scope_identity cung cấp thông tin nhận dạng cập nhật cuối cùng cho phạm vi cụ thể (hoặc) chọn ident_curr ('tablename') cung cấp thông tin cập nhật mới nhất bất kể phiên hoặc phạm vi nào.

Các vấn đề liên quan