복붙노트

[SQL] SQL Server는 타임 스탬프 열을 업데이트

SQL

SQL Server는 타임 스탬프 열을 업데이트

내 데이터베이스에서 나는 타임 스탬프 열이 있습니다. 나는 테이블에서 행을 업데이트해야하고, 타임 스탬프 열을 업데이트해야합니다. 내가 업데이트 명령을 실행할 때 내가 얻을 :

Cannot update a timestamp column.

어떻게 타임 스탬프 열을 업데이트 할 수 있습니까?

해결법

  1. ==============================

    1.당신은하지 않습니다

    당신은하지 않습니다

    타임 스탬프 열이 자동으로 업데이트됩니다. 아마 당신은 타임 스탬프 시간과 관련된 값을 포함하고 있다는 인상을 받고있다? 그것은하지 않습니다,하지만 단순히 레코드의 값이 될 때마다 업데이트되는 숫자입니다. 행 버전 번호처럼 생각하십시오.

    MSDN에서 :

  2. ==============================

    2.행의 다른 열이 업데이트 될 때마다 타임 스탬프 (지금 이름 rowversion) 열이 자동으로 SQL 서버에서 업데이트됩니다 - 당신은 타임 스탬프 열을 업데이트하지 않습니다.

    행의 다른 열이 업데이트 될 때마다 타임 스탬프 (지금 이름 rowversion) 열이 자동으로 SQL 서버에서 업데이트됩니다 - 당신은 타임 스탬프 열을 업데이트하지 않습니다.

    당신이 이미 알고 있지만, 어떤 이유로 업데이트 할 수있는 열을 강제 할 경우, 당신이 영향을 원하는 행에 대한 업데이트를 수행. 그것은 실제 데이터 변경을 초래하더라도, 타임 스탬프 열이 계속 업데이트됩니다 :

    create table #T1 (
        ID int not null,
        ts timestamp not null
    )
    insert into #T1 (ID)
    select 1 union all
    select 2
    select * from #T1
    update #T1 set ID = ID where ID=1
    select * from #T1
    
    ID  ts
    1    0x0000000000039AAF
    2    0x0000000000039AB0
    
    ID  ts
    1    0x0000000000039AB1
    2    0x0000000000039AB0
    
  3. ==============================

    3.나의 질문에 대한 답변은 아니지만 나는 TIMESTAMP가 오해 할 수있는 방법을 언급하고 싶었다.

    나의 질문에 대한 답변은 아니지만 나는 TIMESTAMP가 오해 할 수있는 방법을 언급하고 싶었다.

    당신은 당신의 문제의 TIMESTAMP 컬럼의 사용을 명시하지 않는하지만 사실 당신은 당신이 때 데이터 변경 사항을 기록하려고 (나에게) 의미 업데이트하기 위해 노력하고 있습니다.

    이 문서에서보세요 당신이 실제로 DATETIME을 사용하여 변경 사항을 기록 할 때 타임 스탬프를 사용하여 관련 (그물에 많은 사람들도 있습니다).

    BOL는 말합니다 :

    Damien_The_Unbeliever가 말했듯이 유형은 이름과 설명을 말한다되었습니다

    물론, 당신이 방식으로 데이터 형식을 사용하는 경우하면 모든 위의 무시 목적 :

  4. ==============================

    4.업데이트가 허용 된 경우는, 값이 고유하게 보증 될되지되지 않는, - 그것은 서버 생성하고 전체 데이터베이스에 대해 고유해야하는 보증 될 때문에 타임 스탬프 열을 업데이트 할 수 없습니다.

    업데이트가 허용 된 경우는, 값이 고유하게 보증 될되지되지 않는, - 그것은 서버 생성하고 전체 데이터베이스에 대해 고유해야하는 보증 될 때문에 타임 스탬프 열을 업데이트 할 수 없습니다.

    기록의 그룹 당 마지막 업데이트 기록을 확보하려고 할 때 몇 가지 문제가 발생 - 나는 복제 된 인스턴스가 출판사와 동일한 타임 스탬프 값을 가지고 있지 않았기 때문에 복제 된 인스턴스에서 타임 스탬프 열을 업데이트하려고 같은 문제에 직면했다. 물론, 복제, 그것은 가입자에게 이상 복제 동일한 타임 스탬프 값을 사용하려면 게시자에 configurationg 간단한이었다.

    그렇지 않으면, 타임 스탬프 값을 업데이트 할 다른 방법이 없습니다.

  5. ==============================

    5.저도 같은 문제를 겪고, 내 솔루션 :

    저도 같은 문제를 겪고, 내 솔루션 :

    UPDATE [table]
    SET [ANY_COLUMN] = [ANY_COLUMN]
    WHERE ID = [ID]
    

    타임 스탬프가 다시 계산됩니다 테이블 값 변경, 나는 때문에 타임 스탬프가 업데이트 될 때 동일한 값으로 모든 열을 업데이트 언제 같은

  6. from https://stackoverflow.com/questions/4592658/sql-server-updating-a-time-stamp-column by cc-by-sa and MIT license