arcobjects 코드없이 버전이 지정된 피쳐 클래스에서 기본 키를 유지할 수 있습니까?


11

이 때문에 좋은 생각이 아니다 관계의 기본 키로하며 Object를 사용하려면 다른 열을 사용해야합니다. DBMS 시퀀스를 사용하여 버전이 지정된 기능 클래스에서 기본 키 열을 채울 수 있습니까, 아니면이를 수행하기 위해 arcobjects 코드를 작성해야합니까?

Global ID를 사용할 수 있다고 들었지만 GIS 이외의 DBA가 유지 관리하는 관련 테이블은 종종이 아이디어에 눈살을 찌푸립니다.


메모리가 부족하고 제대로 작동하지 않았기 때문에 내 대답을 주석으로 옮기는 방법 : 몇 년 전 adds 테이블에서 insert 트리거를 사용해 보았습니다. 내가 정확하게 기억한다면, 그것은 효과가 있었다. 결국 새로운 기능 클래스를 추가 / 버전 할 때 새로운 트리거를 작성할 필요가 없기 때문에 (저장소 프로 시저라고하는) ArcObjects 솔루션으로 이동했습니다.
Jay Cummins

2
null 검사가있는 AFTER INSERT 트리거 (oracle)라고 생각하므로 새 행이 이동하면 기존 기본 키 값을 얻습니다. 널인 경우 채워집니다. 어쩌면 내가 틀렸고 제대로 작동하지 않았고 그것을 깨닫지 못했습니다. 어떤 데이터베이스를 사용하고 있습니까?
Jay Cummins

@Jay 감사합니다. 이 질문을하는 주된 이유는 내가 작성한 arcobjects 코드 외에도이 문제에 대한 다른 접근법이 있는지 확인하는 것입니다. 철저히 조사하지 않고 내 솔루션이 가능한 유일한 솔루션이라고 누군가에게 말하고 싶지 않습니다. 그리고 만약 그렇다면, 그것을 유지하는 것이 얼마나 어려운가. 나는 종종 저장 프로 시저를 작성하며 그 대부분은 SQL Server에 있습니다. 나는 arcobject 대신 dbms 레벨 에서이 작업을 수행 할 수있는 방법이 있다고 생각하지만 모든 dbms를 자세히 살펴 본 적이 없습니다.
Kirk Kuykendall

답변:


7

예, 몇 가지주의 사항이 있습니다.

트리거를 사용하여 수행 할 수 있지만 구현은 DBMS에 따라 다릅니다 (기본 데이터베이스 (특정) 메커니즘을 사용하여 다른 AFTER INSERT 트리거를 구현해야하므로).

당신은 할 수 없습니다 인서트 그리고 기본 테이블이 잠재적으로 수정하는 모든 행에 대해 중복 된 항목이있을 수 있기 때문에 (즉 업데이트 버전 데이터베이스 모델링하는 방법입니다) 해당 필드에 어떤 종류의 UNIQUE 제약 조건을 지정할 수 있습니다. 기본 테이블 에서이 작업을 실수로 실수하면 압축 작업이 실패하기 시작할 때 이것을 깨닫게됩니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.