2011-03-01 131 views
1

我创建了下表约束问题

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

我想提出以下约束的名字是与城市的独特拍摄只能从‘孟买’,‘浦’,‘纳西克’,‘潘’' 。我知道关于名称的独特约束。我搜索了很多与城市有关的约束,但我直到现在才知道。你能帮我解决一下限制吗?我用'BETWEEN'约束,但失败了。我该怎么办?

回答

1

可以使用IN代替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

我想你问的名字自己的城市中是唯一的,并为城市来自可能性固定列表?

如果是这样,下面将工作:

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')) 
);