데이터베이스 항목이 삭제되지 않지만 삭제 된 것으로 표시된 프로젝트에서 작업하고 있습니다. 이런 식으로 뭔가가 :데이터베이스 제약 조건을 사용하고 삭제 대신 삭제로 표시 만하려면 어떻게해야합니까?
id name deleted
--- ------- --------
1 Thingy1 0
2 Thingy2 0
3 Thingy3 0
나는 name
컬럼에 UNIQUE 제약 조건 같은 것을 정의 할 수 있도록하고 싶습니다. 쉽지, 그렇지?
"Thingy3"이 삭제되고 새 것으로 만들어 졌다고 가정 해 봅니다 (수년 후). 우리는 다음을 얻습니다 :
id name deleted
--- ------- --------
1 Thingy1 0
2 Thingy2 0
3 Thingy3 1
...
100 Thingy3 0
사용자의 관점에서, 그는 항목을 삭제하고 새 것을 만들었습니다. 파일을 삭제하고 새 파일을 만드는 것과 비슷합니다. 따라서 새 항목이 관련이 없으며 이전 항목에 연결된 모든 데이터에 연결되지 않았 음이 분명합니다.
DB는 id
만 취급하므로 새 항목의 값은 id
이 3이 아니므로 완전히 처리되었으므로이 값은 완전히 다릅니다.
사용자가 생성하지 못하도록하려는 경우 어려움이 발생합니다. "Thingy3"항목. deleted
으로 표시되지 않은 항목 만 보았던 UNIQUE 제약 조건이있는 경우 한 가지 문제가 해결되었을 것입니다.
, 어떻게 제약의 종류를 정의 할 수 있습니다 (물론, 그때 ... 누군가가 삭제의 취소를 수행 할 때 무슨 일을 처리해야 할 것이다)?
CREATE UNIQUE INDEX [MyINDEX] ON [TABLENAME] ([NAME] , [DELETED])
바와 같이 SteveWeet 지적
이 말은 소프트 삭제라고합니다. http://databaserefactoring.com/IntroduceSoftDelete.html – cherouvim
이름을 알고있는 것을 잘 알고 있습니다. 감사! – scraimer