2012-05-25 2 views
0

필드 PK, 사용자 이름, DOB 등의 상태가있는 테이블이 있습니다. 사용자 이름을 변경하면 원래 행을 업데이트하지 않고 새 사용자 이름으로 원래 정보와 함께 새 행을 삽입하고 이전 행 상태 = 0으로 설정합니다. (그래서 나는 어떤 정보도 삭제하지 않는다). 이전 행 pk를 새 행의 pk에 대한 외래 키로 사용하는 테이블을 어떻게 갱신 할 수 있습니까? 나는 Casacade에서 일할 것이라고 생각하지 않습니다.새 행을 업데이트 방법으로 삽입하는 경우 변경을 계단식으로 배열하는 방법?

감사

+1

이것은 나쁜 생각처럼 들립니다. 기본 키는 주어진 레코드의 수명 내내 고정되어 있어야합니다. 모든 비즈니스 요구 사항이 사용자 이름이 업데이트 되었기 때문에 새 기본 키를 만드는 원인이 무엇이든지 다시 밀어 넣을 수 있습니다. –

+0

변경 사항을 어떻게 추적 하시겠습니까? – user1406416

+0

@ user1406416 : 이것은 일반적으로 트리거 및 감사 테이블을 사용하여 수행됩니다. [이 검색] (http://www.google.com/cse?cx=018205968162215846785%3A7n6ajnwyz-i&ie=UTF-8&q=sql+server+audit+table&sa=Search)을 시도해보십시오. –

답변

1

주어진 레코드의 수명이 다할 때까지 정적으로 유지해야 기본 키에 동의! 사용자 이름 기록 테이블을 구현하고 원래 테이블의 사용자 이름을 업데이트하십시오. 변경 사항이있는 PK를 FK로 실행 기록 테이블에 삽입하십시오. 변경 사항을 추적하는 새 테이블이 있으며 원본 테이블이 그 목적을 달성하기 위해 존재하며 여전히 다른 테이블과 관련되어 있습니다.

+0

이렇게하면 두 테이블의 합집합 인 뷰를 만들어 모든 기록 레코드가 필요할 때 쉽게 쿼리 할 수 ​​있도록해야합니다. – HLGEM

+0

감사합니다. – user1406416

관련 문제