정수를 사용하고 싶지 않습니다. 값을 늘리려면 값을 읽지 않으려 고합니다. 즉 기술적으로 읽기를 요구 않지만
UPDATE Table SET
IntColumn = IntColumn + 1
, 나는 그것으로 문제가 표시되지 않습니다.
당신은 언제나 같은 값으로 업데이트 할 수 있습니다 :뿐만 아니라 rowversion 업데이트를 트리거
UPDATE Table SET
SomeColumn = SomeColumn
.
ADDITION : 당신은 최대 아이들의 rowversion으로보기를 할 수있는 :
SELECT Parent.*, MaxChildRowVersion as ChildVersion
FROM Parent
JOIN (
SELECT ParentId, MAX(RowVersion) as MaxChildRowVersion
FROM Child
GROUP BY ParentId
) as Child ON
Parent.ParentId = Child.ParentId
그러나, 당신은 당신의 자신의 갱신 구현할 수 있지만 아니, 당신이 직접 (A rowversion 열을 업데이트 할 수 없습니다 @@ DBTS, 바이너리 (8) 및 INSTEAD OF 트리거 ...)
마지막 요점의 예를 들려 줄 수 있습니까? 그것은 유망한 것으로 들립니다.
아니요, 실제로 그렇지 않습니다. ;) 그냥 대신 동일한 값으로 업데이트하거나보기를 사용할 수있을 때 너무 많은 작업이 필요합니다. 그것들은 가장 쉬운 2 가지 옵션입니다.
그러나 완료하려면 기본값 @@ DBTS (데이터베이스 버전 번호를 반환)가있는 이진 (8) 열과 이진 열을 새로운 @@ DBTS로 업데이트하는 AFTER UPDATE 트리거 수동으로 업데이트 할 수있는 psuedo-rowversion 유형을 제공합니다. 그것은 다른 컬럼을 업데이트하는 것보다 더 빠르거나 낫지 않을 것입니다.
날짜 시간을 사용하는 다른이 뭔가를 columns..is 또는 당신이 날짜 시간을 사용하지 않으려는 이유를 명확히 할 수 있습니까? – dan
DateTime 데이터 유형을 버전 관리 및 낙관적 동시성에 사용해서는 안되는 이유에 대한 기사를 읽었습니다. 모든 세부 사항을 기억할 수는 없지만 그 당시에는 의미가있었습니다. 데이터 유형의 정확성 때문이라고 생각합니다. 이론적으로 동일한 상황에서 업데이트가 발생하여 경쟁 조건이 발생할 수 있습니다. –
데이터베이스에서 날짜/시간을 제공하지 않는 경우 - SQL Server DATETIME은 초 단위로 나타납니다. http://msdn.microsoft.com/en-us/library/ms187819.aspx –