检查两个唯一的值,sql

本文关键字:sql 唯一 两个 检查 | 更新日期: 2023-09-27 18:14:41

我有一个表,包含两列AB,具有唯一的值约束。当用户在数据库中输入新的值A1B1时,我想检查A1A列中不存在,B1B列中也不存在。

——编辑

这两列在数据库中已经是唯一的。我想写一个查询来搜索给定的值,如果返回值为空,那么用户可以添加新的值A1B1。如果有匹配,那么我将给用户消息,他不能添加这些值。

检查两个唯一的值,sql

你想要哪一个?

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

每个选项在

上需要一个唯一的约束(或索引)
  1. B
  2. (A, B)

所有SQL方言都允许在约束

中设置多个列

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

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

这对于并发性是不安全的,所以有更好的选择

  • 对于SQL Server 2008+,你有MERGE语句
  • 对于MySQL,你有INSERT IGNORE
另外,请注意,您通常不会先测试,然后向用户报告,然后允许写入。不能保证可以在SELECT和INSERT之间写入值。