2013-11-25 2 views
1

테이블에서 마지막으로 업데이트 된 행의 ID를 가져 오려면이 ID를 다른 작업에 사용하려는 것과 같은 요구 사항이 있습니다.SQL Server 2008에서 마지막으로 업데이트 된 행의 ID를 얻는 방법

나는 해당 열을 참조 할 수 있도록 UpdatedOnOn과 같은 열이 없습니다.

그래서 Update에는 마지막으로 삽입 된 행 ID의 ID 인 scope_identity 및 @@ identity와 같은 함수도 있습니다.

동일하게 도와주세요.

+6

시간 그러한 열을 만들 수 있습니다. Btw,'scope_identity'도이 범위에서만 작동하고 2 일 후에는 작동하지 않으므로'CreatedAt' 열을 대체하지 않습니다. –

+0

행/열 기준으로 마지막 업데이트 정보를 가져올 수는 없지만 테이블 수준에서이 정보를 얻을 수는 있지만 [link] [1] 그러나 나는 그것이 당신에게 쓸모가 없다고 생각합니다. 최상의 솔루션은 업데이트 세부 정보를 저장하는 테이블을 만드는 것입니다 userId, datetime 등 [1] : http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/ –

답변

7

당신은 업데이트 된 마지막 ID에만 관심이 있기 때문에이

declare @mytable as TABLE 
    (
     Id int 
    ) 

Update Table Set Name='Nitin' 
OUTPUT INSERTED.Id into @mytable 
where LastName='Varpe' 

Select Id from @mytable 
0

방아쇠를 찾아야한다고 생각합니다. 이동 후 삽입/업데이트 트리거. 항상

쿼리 ... 삽입라는 동적 테이블에서 당신에게 마지막 삽입/업데이트 기록을 줄 것이다 :

Select * from Inserted. 클릭하여 원하는 필드 얻을.

+0

작동 가능 트리거는 좋은 영구적 인 솔루션이 아닙니다. 당신 (또는 다른 사람들)은 혼란을 가져 오는 존재를 잊어 버릴 것입니다. 테이블을 업데이트하고 다른 작업을 수행하기 위해 간단한 저장 프로 시저를 사용하지 않는 것이 좋습니다. [킥 습관 나쁜 : 트리거를 학대] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx) –

4

과 같은 작업을 수행 할 수 있습니다, 당신은 단순히 SET 절에 변수에 할당 할 수 있습니다 :

DECLARE @LastID INT = NULL 

UPDATE 
    SomeTable 
SET 
    SomeColumn = 'SomeValue', 
    @LastID = ID 
WHERE 
    SomeOtherColumn = 'SomeOtherValue' 
+0

위대한 솔루션, 나는 이 방법으로 업데이트 된 행 값으로 변수를 설정할 수 있다고 생각한 적이 없습니다. 감사. –

관련 문제