【发布时间】:2019-09-12 13:54:44
【问题描述】:
我有一个包含 2 列的表“TEST”,如下所示:
create table TEST (
SEQ_NUM NUMBER NOT NULL,
SWITCH VARCHAR2(1))
switch 列从应用程序接收输入为 0 或 1。 对于特定的 SEQ_NUM 值,我们可以有任意数量的 Switch 值为 0 的行。 但是对于一个特定的 SEQ_NUM 值,我们只能有一条 SWITCH 值为 1 的记录。
我尝试过创建这样的约束,但它会引发语法错误:
CREATE UNIQUE INDEX EMP_INDEX
ON TEST(
(CASE
WHEN SWITCH = 1
THEN UNIQUE (SEQ_NUM)
ELSE
NULL
END));
为了更清楚,输出应该如下:
SQL> 插入 TEST(SEQ_NUM,SWITCH) 值 (3,0);
SQL> 创建了 1 行。SQL> 插入 TEST(SEQ_NUM,SWITCH) 值 (3,0);
SQL> 创建了 1 行。
SQL> 插入 TEST(SEQ_NUM,SWITCH) 值 (3,1);
SQL> 创建了 1 行。SQL> 插入 TEST(SEQ_NUM,SWITCH) 值 (3,1);
ORA-error : 查询插入失败,出现 xyz 错误 ---- 如果我第二次插入,查询应该抛出错误。
【问题讨论】:
-
非常感谢!!这真的很有帮助:) 我错过了
标签: oracle