如何保持细胞组合的独特性

时间:2009-09-22 07:13:08

标签: sql

我有表A和表B.我有一个名为tableC的桥表

表C中的

我有:

ID
tableA_ID
tableB_ID

ID是主键。

我还想强制tableA_ID和tableB_ID的组合是唯一的,因此没有重复的记录。

我该如何强制执行此操作?

3 个答案:

答案 0 :(得分:3)

create unique index myIdx on tableC(tableA_ID, tableB_ID)

或您的特定数据库系统的任何语法。

答案 1 :(得分:2)

制作PRIMARY KEY tableA_ID和tableB_ID,EXCLUDING ID

假设我们有一个表TABLEA,其值为

tableAID
1
2
3

和表TABLEB,其值为

tableBID
4
5
6

使主键(ID,tableA_ID,tableB_ID)不起作用,例如。

ID | tableAID | tableBID
1 | 1 | 4
2 | 1 | 4

可以正常使用上面的pk,但你需要PRIMARY KEY(tableA_ID,tableB_ID)

答案 2 :(得分:0)

删除ID列,然后将其他两列作为主键,其唯一性将由数据库服务器强制执行。 没有必要拥有ID列 - 即使它是一种引用特定记录的便捷方式 - 因为其他两列的唯一性意味着它们足以引用特定记录。

您可能还希望在此表上添加一个索引,其中包括列,以便更快地访问。