2009-12-05 1 views
3

IDENTITY 필드를 사용하여 원래 SQL Server 용으로 작성된 응용 프로그램을 유지 관리합니다. 따라서 자동 증가 테이블의 기본 키에 많은 트리거를 정의해야했습니다.Oracle에서 트리거를 사용하여 IDENTITY/AUTOINCREMENT 열을 시뮬레이트하는 것이 얼마나 좋지 않습니까?

나는 이것이 오라클 세계에서 해로운 해결 방법으로 여겨지지만 그것은 "친구의 친구"와 같은 방식으로 나에게 들었다고 들었습니다. 시퀀스를 직접 사용하는 대신 시퀀스에서 기본 키를 증가시키기 위해 트리거를 사용하는 것이 얼마나 큰 일입니까?

+0

Oracle을 업그레이드 할 수 있습니까? 10g (또는 11g였습니까?) 이미 DEFAULT에 시퀀스가있을 수 있으므로 트리거가 필요하지 않습니다. –

+5

11G에서도 시퀀스를 열 기본값으로 사용할 수 없습니다. –

+0

예, 11G의 열 기본값으로 시퀀스가 ​​없습니다. 11G의 변화는 이제 PL/SQL에서 시퀀스 nextval로 변수를 채우기 위해 이중 선택을 수행하는 대신 변수 선언에서 시퀀스를 기본값으로 사용할 수 있다는 것입니다. –

답변

10

내 경험 에선 아주 흔한 일이며,별로 나쁜 것은 아닙니다. 그러나 삽입을 제어하는 ​​경우 (예 : 모든 삽입이 PL/SQL API를 통해 수행되는 경우) 트리거를 실행하는 오버 헤드를 피하기 때문에 INSERT 문에서 직접 시퀀스를 사용하는 것이 더 효율적입니다. 하지만 트리거를 사용하면 정말 걱정할 필요가 없습니다!

+0

그건 내가 생각하고 있었던 것에 관한거야. 나는 프로세스 종료시에 파일을 닫지 않게하는 대신 파일을 닫는 것과 동일한 방식으로 "우수 사례"로 간주되었다고 생각했습니다. –

+0

+1, 옵션이 매우 제한적입니다. – DCookie

1

이것은 완전히 관련이 없지만 "삽입 트리거"를 사용하여 기본 키를 자동 증가시키는 것이 특히 병합 문에서 좋은 옵션입니다. 병합 삽입 섹션 내에서 시퀀스를 직접 사용하면 시퀀스가 ​​업데이트를 위해 호출되는 것처럼 보입니다.

관련 문제