에서 감사합니다 모든 필드를 업데이트합니다. 웹 개발의 경우에는 일반적으로 optimistic concurrency control을 사용하여 문제를 해결하십시오. ASP.NET 개발자는 Microsoft SQL Server를 사용하여 데이터를 보관할 수 있습니다. SQL Server는 매우 유용한 데이터 형식 인 rowversion (timestamp
데이터 형식이라고도 함)을 지원합니다. Null이 허용되지 않는 rowversion
열은 의미 상으로 binary(8)
열과 같습니다. rowversion
의 주요 이점은 사용법이 간단하다는 것입니다. SQL Server는 데이터베이스와 연결된 내부 카운터를 지원합니다. 카운터는 @@DBTS
변수마다 액세스 할 수 있습니다. 데이터베이스의 테이블에서 행이 수정 될 때마다 rowversion
열이 으로 자동 변경되고은 @@DBTS
으로, @@DBTS
은 증가합니다. 추가 rowversion
열을 사용하여 행의 값이 마지막으로 읽은 이후로 변경되었는지 여부를 쉽게 판별 할 수 있습니다.
기존 데이터베이스 테이블이 있으면 행 업데이트 카운터의 rowversion (타임 스탬프)을 보유 할 열을 하나만 추가하면됩니다. 예를 들어, 문
ALTER TABLE dbo.Users ADD RowUpdateTimeStamp rowversion NOT NULL
테이블 dbo.Users
에 유형 rowversion
의 RowUpdateTimeStamp
열을 추가합니다. 새로운 사용자 테이블을 작성하는 경우 당신은 그것은 당신이 설명하는 테이블을 생성
CREATE TABLE dbo.Users (
Id int NOT NULL IDENTITY,
FirstName nvarchar(64) NOT NULL,
LastName nvarchar(64) NOT NULL,
RowUpdateTimeStamp rowversion NOT NULL,
CONSTRAINT PK_Users PRIMARY KEY CLUSTERED (Id ASC),
CONSTRAINT UC_Users_LastName_FirstName UNIQUE NONCLUSTERED (LastName ASC, FirstName ASC)
)
아래처럼 뭔가를 할 수 있지만, 테이블은 유형 rowversion
의 추가 RowUpdateTimeStamp
열이있을 것이다. 열에 수동으로 값을 저장할 필요가 없다는 점을 강조하는 것이 중요합니다. SQL Server는 자동으로 열 값을 저장/수정합니다.
표의 데이터로 표를 채우는 경우 예를 들어 숨겨진 RowVersion
열을 데이터베이스 테이블의 RowUpdateTimeStamp
열의 값으로 채울 수 있습니다. 숨겨 RowVersion
의 값이 다른 가능한 항목의 값과 함께 발송되는 것을 의미
name: "RowVersion", sortable: false, hidden: true, hidedlg: true,
editable: true, editrules: { edithidden: false }
같이
colModel
의 해당 칼럼의 정의 보인다.
그리드 행을 수정하는 서버 메소드는 RowUpdateTimeStamp
의 수정 된 버전을 반환합니다.나는 aftersavefunc
콜백을 사용하여 inline editing 또는 afterSubmit
이 form editing이고 그리드의 RowVersion
열을 서버에서 반환 된 값으로 수정하는 데 사용합니다.
서버가 클라이언트로부터 수정 요청을받는 경우 수정 행은 항상 RowVersion
입니다. 서버 코드는 데이터베이스의 해당 데이터가 RowUpdateTimeStamp
열에있는 값보다 작거나 같은지 여부를 확인합니다. 데이터베이스가 더 높은 값을 갖는 경우 사용자가 이미 데이터를 수정했습니다. 이 경우 서버는 일부 오류 HTTP 코드 (> = 300)로 HTTP 응답을 반환합니다. jqGrid는 응답을 오류로 해석하고 해당 오류 메시지를 표시합니다. errorTextFormat 또는 errorfunc을 사용하여 오류 메시지를 사용자 정의 할 수 있습니다.
모든 생산적인 구현에서 위에서 설명한 방법을 사용합니다. 주제에 대한 추가 정보는 the old answer에서 읽을 수 있습니다.
대단히 감사합니다. 아래의 또 다른 작은 질문. 네가 대답한다면 나는 감사 할 것이다. –
@Altan Alansu : 다른 질문이있는 경우 새로운 질문을 게시하거나 기존 질문을 수정하십시오. – BoltClock