检查两个唯一值sql

时间:2013-05-20 13:11:08

标签: c# sql oracle unique-constraint

我有一个表,包含两列 A B ,具有唯一值约束。 当用户在数据库中输入新值 A1 B1 时,我想检查 A中是否存在 A1 B 列中也不存在strong>列和 B1

- 编辑

这两列在数据库中已经是唯一的。我想编写一个查询来搜索给定的值,如果返回值为null,那么用户可以添加新值 A1 B1 。如果有匹配,那么我将向用户提供他无法添加这些值的消息。

1 个答案:

答案 0 :(得分:1)

你想要哪一个?

  1. 独立于其他列的唯一
  2. B独立于其他列
  3. A和B对独立于其他列
  4. 唯一

    每个选项都需要

    上的唯一约束(或索引)
    1. A
    2. 两者(A,B)
    3. 所有SQL方言都允许您在约束中设置多个列

      经典SQL就是这样。我假设A和B在这里是varchar

      INSERT mytable (A, B)
      SELECT 'A1', 'B1'
      WHERE NOT EXISTS (SELECT * FROM mytable WHERE A= 'A1' AND B = 'B1')
      

      这对并发性并不安全,因此有更好的选择

      另外,请注意,您通常不会先测试,向用户报告,允许写入。无法保证可以在SELECT和以后的INSERT之间写入值。