gpt4 book ai didi

sql - 对两列的任意组合的唯一约束

转载 作者:太空狗 更新时间:2023-10-30 01:59:56 25 4
gpt4 key购买 nike

我正在尝试为两列的组合实现唯一约束。我正在运行 oracle 11g。

具体来说,我有两列 A 和 B。

我有如下一行

A     B
1 2

然后我希望下面的组合在插入时失败

A     B
1 2
2 1

这可以通过 Oracle 中的唯一索引实现吗?

最佳答案

是的,这是可能的(例如使用生成的列):

CREATE TABLE tab(A INT NOT NULL, B INT NOT NULL);

ALTER TABLE tab ADD c1 AS (LEAST(A,B));
ALTER TABLE tab ADD c2 AS (GREATEST(A,B));
CREATE UNIQUE INDEX UQ_tab ON tab(c1,c2);

如果需要,您可以隐藏这些列(Oracle 12c):

ALTER TABLE tab MODIFY c1 INVISIBLE;
ALTER TABLE tab MODIFY c2 INVISIBLE;

DBFiddle Demo

编辑:

更简单的方法:

CREATE UNIQUE INDEX UQ_tab ON tab(least(A,B), greatest(A,B));

DBFiddle Demo

关于sql - 对两列的任意组合的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51082871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com