我有一个表,包含两列 A 和 B ,具有唯一值约束。 当用户在数据库中输入新值 A1 和 B1 时,我想检查 A中是否存在 A1 B 列中也不存在strong>列和 B1 。
- 编辑
这两列在数据库中已经是唯一的。我想编写一个查询来搜索给定的值,如果返回值为null,那么用户可以添加新值 A1 和 B1 。如果有匹配,那么我将向用户提供他无法添加这些值的消息。
答案 0 :(得分:1)
你想要哪一个?
每个选项都需要
上的唯一约束(或索引)所有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之间写入值。