2011-03-01 20 views
1

。私は名前を持つユニークな制約について知っています。私は都市との制約について多くを探しましたが、今まではそれを得られません。制約について私を助けてください。私は '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')) 
);