【问题标题】:Check two unique values, sql检查两个唯一值,sql
【发布时间】:2013-05-20 13:11:08
【问题描述】:

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

--编辑

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

【问题讨论】:

  • 你的意思是column的两个值都不存在还是两者中的任何一个?
  • @JW웃 这两个值必须是唯一的。
  • 听起来您不知道您可以在 set 列上创建唯一约束。
  • 这是 MySQL 还是 SQL Server 还是其他?
  • 你检查。它们不存在。你决定提交。与此同时,其他人添加了它们,因此唯一约束拒绝插入。由于您必须编写代码来处理这种情况无论如何,只需编写该代码即可。

标签: c# sql oracle unique-constraint


【解决方案1】:

你想要哪一个?

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

每个选项都需要一个唯一的约束(或索引)

  1. 一个
  2. B
  3. 两者(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')

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

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

【讨论】:

  • 这两列都有唯一的约束,我想编写一个查询来搜索给定的两个值并返回结果。如果我找到匹配项,则用户无法添加新数据。
猜你喜欢
  • 1970-01-01
  • 2023-02-03
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多