我有一张桌子,这张桌子与多对多的关系。所以我创建另一个表(第二个表),它存储来自原始(第一个)表的复合主键的两个id。但如果在第二个表中有id1 = 1且id2 = 2,那么第二个表不应该有id1 = 2且id2 = 1。 那么我该怎么做呢,我应该为此编写一个触发器,还是有一个简单的方法来进行oracle。 我使用Oracle11g和pl / sql开发人员。
答案 0 :(得分:2)
<style>
a[href^="x-apple-data-detectors:"] {
color: inherit;
text-decoration: inherit;
}
</style>
答案 1 :(得分:2)
您可以尝试定义一个基于函数的唯一索引,该索引会按数字顺序自动定义索引。这将确保只允许两种组合中的一种。类似的东西:
create unique index your_index on your_table(
least(id1, id2),
greatest(id1, id2)
);
如果重要,这种方法与使用检查约束的MT0答案之间会略有不同。
使用检查约束方法,只有(id1=1, id2=2)
有效。
使用基于函数的索引方法,(id1=1, id2=2)
和(id1=2, id2=1)
都有效,但在任何给定时间它们都不能同时出现在表中。