我创建了下表
create table publisher(name varchar(20), city varchar(20));
我想提出以下约束,'名称与'mumbai','pune','nasik','panji''一起具有独特性。我知道名字的唯一约束。我搜索了许多关于城市的约束,但直到现在我还没有得到它。请你帮我解决一下约束。我使用'BETWEEN'约束,但它失败了。我该怎么办?
答案 0 :(得分: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
答案 1 :(得分: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'))
);