2011-03-01 3 views
1

나는 '제약 문제

create table publisher(name varchar(20), city varchar(20)); 

나는, 뭄바이', '푸네', '시크', 'ぱ ん じ 음' '단지에서 가져온 이름은 도시와 독특한 데'제약 다음 넣을 다음 표를 생성 . 이름에 대한 고유 한 제약 조건을 알고 있습니다. 나는 도시와의 제약에 대해 많은 것을 수색했지만 지금까지는 이해하지 못한다. 당신이 제약에 대해 도와주세요. 'BETWEEN'제약 조건을 사용했지만 실패했습니다. 어떻게해야합니까?

답변

1

당신은 가능성의 고정 된 목록에서 오는 대신 BETWEEN

CREATE TABLE publisher 
    (
    name VARCHAR(20) UNIQUE 
    , city VARCHAR(20) CHECK (city IN ('a', 'b')) 
); 

INSERT INTO publisher 
    VALUES ('hi','a'); -- Succeeds 

INSERT INTO publisher 
    VALUES ('hi','b'); -- Fails, already have 'hi' 

INSERT INTO publisher 
    VALUES ('hj','c'); -- Fails, 'c' is not a city 
0

나는 당신이 그들의 도시 내에서 고유하게 이름을 요구하고 생각의 IN, 그리고 도시의를 사용할 수 있습니까?

그렇다면, 다음 작동합니다 :

create table publisher(
    name varchar(20), 
    city varchar(20), 
    constraint UQ_NamesWithinCities UNIQUE (name,city), 
    constraint CK_CityNames CHECK (city in ('mumbai', 'pune', 'nasik', 'panji')) 
);