约束问题

时间:2011-03-01 11:47:52

标签: sql-server constraints

我创建了下表

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

我想提出以下约束,'名称与'mumbai','pune','nasik','panji''一起具有独特性。我知道名字的唯一约束。我搜索了许多关于城市的约束,但直到现在我还没有得到它。请你帮我解决一下约束。我使用'BETWEEN'约束,但它失败了。我该怎么办?

2 个答案:

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