database - 如何在 oracle 表上强制执行唯一的 2 元组?

标签 database oracle constraints unique

我正在尝试强制执行表 Match 应具有所有唯一元组(团队 1、团队 2)的属性。但是,让第 1 队 = 底特律活塞队和第 2 队 = 芝加哥公牛队。如果 (Chicago Bulls, Detroit Pistons) 已经存在,我不想将 (Detroit Pistons, Chicago Bulls) 插入到表中。

我如何强制执行此约束?

最佳答案

A) 这些元组在语义上是相同的。 (我认为这就是你的情况。)

这意味着元组 {Chicago Bulls, Detroit Pistons} 与元组 {Detroit Pistons, Chicago Bulls} 的含义完全相同。使用 CHECK 约束对两列进行排序。

CHECK (column_1 < column_2)

这种约束会允许 {Chicago Bulls, Detroit Pistons},但会拒绝 {Detroit Pistons, Chicago Bulls}。这有点像将规范形式强加于其他自由形式的数据。

B) 元组在语义上是不同的。

这意味着元组 {Chicago Bulls, Detroit Pistons} 表示一件事,而元组 {Detroit Pistons, Chicago Bulls} 表示另一件事。例如,第一个属性可能表示“主队”,第二个可能表示“客队”。在这种情况下,您所需要的只是对这对列的某种唯一约束。

关于database - 如何在 oracle 表上强制执行唯一的 2 元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206151/

相关文章:

.net - ADO.NET:将 DataRelation 添加到 DataSet;哪个是 parent ,哪个是 child ?

mysql - MySQL 的求和查询,其中字段包含某些值

mysql - 将 html 存储在数据库中以供使用有哪些缺点?

sql - 在 PL/SQL 变量名称中使用下划线或大写

c++ - 是否可以根据约束 "overload"别名模板?

带有否定和/或多个条件的mysql一对多查询

sql - 如何计算 Oracle 数据库中的百分比增加/减少?

mysql - Liquibase DB 独立插入语句

c# - 使用受约束的泛型而不是接口(interface)——缺点?

ios - 修复了自定义 UITableViewCell swift 中的 ImageView 大小