2010-05-26 5 views
1

sql에서 행을 변경하지 못하게 할 수 있습니까?Sql이 수정되는 행을 방지합니다.

레코드가 생성되었다고 가정 해 봅시다. 그러나 일단 그것이 만들어지면 나는 그 기록이 절대로 수정되기를 원하지 않습니다.

그래서 사용자는 여전히 update table set column = value .. 설정을 시도 할 수 있지만 오류가 발생하면 수정 될 수 없습니다.

답변

3

예는 사용자가 당신이 (SQL Server 2005 및 구문까지)

같이 해당 컬럼에 갱신을 거부 할 수 있습니다이

alter table disable trigger 
update table... 

그런 짓을하지 않는 제공하는 트리거와 함께 할 수있는

DENY UPDATE ON OBJECT::TableName(ColumnName) TO UserNAme; 
2

테이블에 트리거를 놓아야합니다.

트리거는 새 값을 이전 값으로 대체하거나 자동으로 업데이트를 거부하거나 업데이트가 허용되지 않는다는 예외를 사용자에게 전달할 수 있습니다.

또는

당신이 사용자에게 INSERT 권한을 할당하지만, 권한을 업데이트 할 수 없습니다.

+0

저장된 procs를 사용하고 proc 업데이트가없고 사용자가 테이블에 대한 직접 액세스 권한이없는 경우 사용할 수있는 방법이 없기 때문에 레코드를 업데이트 할 수 없습니다. 그리고 여러 레코드 업데이트를 처리하는 트리거를 작성해야합니다. – HLGEM

1

SQL 서버가 세밀한 액세스 제어를 허용하는 경우 가장 쉬운 방법은 SQL Server에서 REVOKE UPDATE ON TABLE입니다.

악의적 인 사용자가 계속 삭제하고 다른 "변경된"레코드를 삽입 할 수 있습니다.