【问题标题】:Constraint Problem约束问题
【发布时间】:2011-07-06 11:04:27
【问题描述】:

我创建了下表

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

我想提出以下约束,“名称具有唯一性,城市仅取自“孟买”、“浦那”、“纳西克”、“潘吉”。我知道名称的唯一约束。我搜索了很多关于城市约束的信息,但直到现在我才明白。请你帮我谈谈约束。我使用了 'BETWEEN' 约束,但它失败了。我该怎么办?

【问题讨论】:

    标签: sql-server constraints


    【解决方案1】:

    我认为您是在要求名称在他们的城市中是独一无二的,并且城市来自固定的可能性列表?

    如果是这样,以下将起作用:

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

    【讨论】:

      【解决方案2】:

      您可以使用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
      

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 2020-07-09
        相关资源
        最近更新 更多