2012-11-01 3 views
0

내가 같은 테이블이 있습니다기본값을 사용하여 열에 값을 삽입하는 방법은 무엇입니까? [PostgreSQL의 9.1]

CREATE TABLE employee (
    id INTEGER DEFAULT NEXTVAL('ids'::regclass) NOT NULL, 
    name CHARACTER VARYING NOT NULL, 
    employer INTEGER DEFAULT (-1) 
); 

을 그리고 난이 테이블에 STH를 삽입 할 (I 기본적으로 employer를 마칠, -1) :

INSERT INTO employee (name, id) VALUES('Doe', 2); 

하지만 내 PostgreSQL을 9.1은 불평하고 있습니다 :

ERROR: insert or update on table "employee" violates foreign key constraint "FK_employer" 
DETAIL: Key (employer)=(-1) is not present in table "employer". 

저는 id = -1 인 고용주는 없습니다.하지만 아직도 그렇게하고 싶습니다. 이 고용주에게 고용주를 -1로 설정하고 싶습니다. postgreSQL으로 가능합니까?

+5

외래 키가 해당 열에 정의되어 있으므로 참조 된 테이블에없는 ID를 삽입 할 수 없습니다. 고용주가 "알 수 없음"이라는 신호를 보내려면 "마법"값이 아닌 "null"을 설정하십시오. 그게 바로'null'을위한 것입니다. –

답변

2

기본값을 null로 설정하십시오. 좋은가요?

employer INTEGER DEFAULT null 
+0

정말 아니야 ... '선택'하고 싶을 때 테이블에서 NULL이 아닌 -1을 얻고 싶습니다. ( – Katie

+0

@Katie'고용주가 null이면 선택하고 -1 그 외의 경우 고용주는 종업원으로 끝내십시오 ' –

+3

@ Katie 또는 [COALESCE] (http://www.postgresql.org/docs/9.2/static/functions-conditional.html) 함수를 사용하여 자동으로 'NULL'값을 '-1'로 변환하십시오. 예를 들어, SELECT COALESCE (고용주, -1)' –

관련 문제