我如何限制 oracle 中重复行的数量?

how can i limit count of duplicate rows in oracle?

create table file( member_no number, filepath varchar2(100) );

我想限制此 table 中 member_no 的重复行数。 例如:

这样,member_no的数量最多可以达到5个,但最好不要超过6个。 我该怎么做?

所以你有两种我能想到的方法:

当您插入时(我假设您正在使用存储过程)运行 if 检查当前行

Declare 
count number;
too_many_num_exception EXCEPTION;
BEGIN

select count(file_path) into count from file where member_no = <num_you_are_inserting>;

if(count = 5)
Then
    raise too_many_num_exception;
end if;

insert(...);
EXCEPTION
    WHEN too_many_num_exception then
        --do something

end;

或者您可以尝试在您的表上创建索引(但这可能行不通 - 这只是一个想法)

CREATE UNIQUE INDEX file_ix1 on file (
CASE WHEN (select count() from file ... ) < 6 THEN member_id ELSE NULL END) 
online 

虽然我不是 100% 能行得通