이런 경우는 어떻게 짜면 좋을까요? 0 2 1,587

by DB_SQL [SQL Query] [2023.05.25 18:30:46]


오라클 SEQUENCE를 사용하지 않고(권한 문제) 해보려 합니다.

 

현재 로직: 예를 들어, A라는 테이블에 년도별로 정리된 데이터가 있는 상태에서 해당 년도에 데이터를 추가할 때 sequence를 증가시키며 저장하려고 합니다.

이 때 sequence를 가져오는 규칙은, 현재는 해당 년도에 저장된 데이터 개수 + 1로 가져온 뒤 sequence를 1 증가시켜 넣습니다. 그런데 이런 경우 동시에 A테이블 바라보고 같은 값을 넣을 수 있기 때문에 무결성 오류가 날 수 있습니다. 

그래서 identity column이라는 것을 찾았는데 이것은 한 테이블 안에서 년도별로(핵심:년도별 sequence 값 초기화) 관리하기가 어려워 보입니다. 

 

이런 상황에서 어떤 아이디어가 있을까요? 고민 하다가 올립니다.

by 우리집아찌 [2023.05.26 14:21:39]

일단...

PK를 인조키로 사용하려면 PK에 사용하는 숫자에 의미를 두지 마세요.

의미가 필요하다면 컬럼 따로 두시면 됩니다.

예를 들어 a10001 , a10002 , b10001 , b10002 이런식으로 PK를 만들지 말라는 말입니다.

필요하다면 a1 , 10001 분리해서 컬럼으로 만드세요.

년도별로 숫자별이 왜 필요하지 설명이 필요하네요. 이게 PK인지도 확실하지 않네요.

그런데 sequence는 무결성 오류나는데 

년도별로(핵심:년도별 sequence 값 초기화) 관리 <= 이건 무결성 오류 안나나요?


by DB_SQL [2023.05.29 19:27:58]

답변 감사드립니다. 제가 질문을 좀 애매하게 한 것 같네요. 다시 정리해서 최근 글로 다시 등록했습니다 ㅜㅜ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입