代码之家  ›  专栏  ›  技术社区  ›  netmajor

唯一-在表中具有唯一行的方法?

  •  2
  • netmajor  · 技术社区  · 16 年前

    我对db表中的唯一行有问题,现在可以这样做:

    id  | Name  | LastName  | City
    -------------------------------------
    1   | John  | Moore     | London
    2   | John  | Moore     | London
    

    当我在所有列中使用UNIQUE属性时,插入第二个Moore时出错,即使它是不同的名称:/

    如何使用UNIQUE(或者可能是INDEX?)在数据库中的“我的表”中执行类似操作:

    id  | Name  | LastName  | City
    -------------------------------------
    1   | John  | Moore     | London
    2   | Jake  | Moore     | London
    3   | John  | Keen      | London
    4   | John  | Moore     | London //but good error when inserting the same row
    

    很抱歉,若问题很简单,但我是sql初学者,在查找使用“像want一样独特”的好示例时遇到问题:/ 或者我必须在插入新行之前从db中选择一个表并检查它是否存在?

    1 回复  |  直到 16 年前
        1
  •  10
  •   Rob Farley    16 年前

    删除单个列上的唯一索引,并将其放在两个列上,如下所示:

    CREATE UNIQUE INDEX ixFullName ON yourTable (LastName, Name);