2013-03-04 2 views
0

상황 : 열 subtypetype (정수)가있는 테이블 steps와 PostgreSQL 데이터베이스포스트 그레스 열은 링크 된

요구 : NULL에 열 subtype 값을 설정하면 열 type 값 같지 않음 '4'새에 삽입물을 기록하십시오.

좋은 방법이 있습니까? 제약? 방아쇠 ?

감사

+3

매뉴얼을 잘 읽는 것이 먼 길을 갈 것입니다. 제한 조건을 사용하여 값을 변경할 수 없으며 누군가가 잘못 설정하는 것을 막을 수 있습니다. 자동으로 설정해야하는 경우 이전에 삽입/업데이트 트리거가 필요합니다. 다음에서 트리거를 읽을 수 있습니다 (트리거 기능의 경우) http://www.postgresql.org/docs/current/static/plpgsql-trigger.html 및 (트리거 자체의 경우) http://www.postgresql.org /docs/current/static/sql-createtrigger.html –

+2

적어도 테이블에 대한 제약 조건이 필요합니다. 기본적으로 응용 프로그램 코드가 수행하려고하는 것을 수정하는 트리거를 작성할 수 있지만 응용 프로그램 코드를 수정하는 것이 좋습니다. (실용적이라면 항상 실용적인 것은 아니며 값을 수정하는 트리거를 작성하십시오.) –

+0

잘못된 데이터를 저장할 수 없도록 'CHECK' 제약 조건을 적용하여 요구 사항을 적용하십시오. 그런 다음 올바르게 작동하도록 응용 프로그램을 수정할 수없는 경우 해당 방식으로 데이터를 설정하는 트리거를 추가하십시오. –

답변

1

우선 제약 조건 추가 할 수 있습니다 : 당신이 설정하는 간단한 트리거를 작성할 수 있습니다 당신에게 필요한 경우 다음

CHECK (type = 4 OR subtype IS NULL) -- if type is 4, sub type may or may not be null 
            -- if type is not 4, sub type must be null 

을하지만, 일반적으로는 응용 프로그램 오류를 올리는 것이 더 낫다 필요한 경우 트리거를 사용하는 것보다 응용 프로그램이 꺼낼 내용이 저장 한 내용이 아니라는 알림이 보통 좋은 일이기 때문에 필요합니다.