1
我创建了下表约束问题
create table publisher(name varchar(20), city varchar(20));
我想提出以下约束的名字是与城市的独特拍摄只能从‘孟买’,‘浦’,‘纳西克’,‘潘’' 。我知道关于名称的独特约束。我搜索了很多与城市有关的约束,但我直到现在才知道。你能帮我解决一下限制吗?我用'BETWEEN'约束,但失败了。我该怎么办?
我创建了下表约束问题
create table publisher(name varchar(20), city varchar(20));
我想提出以下约束的名字是与城市的独特拍摄只能从‘孟买’,‘浦’,‘纳西克’,‘潘’' 。我知道关于名称的独特约束。我搜索了很多与城市有关的约束,但我直到现在才知道。你能帮我解决一下限制吗?我用'BETWEEN'约束,但失败了。我该怎么办?
可以使用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
我想你问的名字自己的城市中是唯一的,并为城市来自可能性固定列表?
如果是这样,下面将工作:
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'))
);