检查两个唯一的值,sql
本文关键字:sql 唯一 两个 检查 | 更新日期: 2023-09-27 18:14:41
我有一个表,包含两列A和B,具有唯一的值约束。当用户在数据库中输入新的值A1和B1时,我想检查A1在A列中不存在,B1在B列中也不存在。
——编辑
这两列在数据库中已经是唯一的。我想写一个查询来搜索给定的值,如果返回值为空,那么用户可以添加新的值A1和B1。如果有匹配,那么我将给用户消息,他不能添加这些值。
你想要哪一个?
- 独立于其他列的唯一列
- B独立于其他列
- A和B对独立于其他列的唯一
每个选项在
上需要一个唯一的约束(或索引)- B
- (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