0
數據源:甲骨文:爲了實現列自動管理
username type rank
a 106 1
a 116 2
a 126 3
b 106 1
b 106 2
時刪除,116,2這個紀錄回報:
username type rank
a 106 1
a 126 2
b 106 1
b 106 2
時插入,116回:
username type rank
a 106 1
a 126 2
a 116 3
b 106 1
b 106 2
我選擇使用tigger來實現:
插入(成功):
create or replace trigger bi_auto
before insert
on auto
for each row
declare
-- local variables here
begin
select count(rank)+1 into :new.rank from auto where username=:new.username;
end bi_auto;
刪除(失敗,返回ORA-04091,ORA-06512,ORA-04088):
create or replace trigger bd_auto
after delete
on auto
for each row
declare
-- local variables here
begin
insert into session_auto
select username, type, rank() over(partition by username order by rank) ranknew from auto where username=:old.username order by username;
delete from auto where username=:old.username;
insert into auto select * from session_auto;
end bd_auto;
請幫我修改了,謝謝知道有表現有問題,但我想知道如何去實現。
謝謝你的回答。如果使用視圖,我在插入或刪除時出現問題。示例:當我刪除'b,106,1'這條記錄時,我不知道是否沒有排名的文章要刪除。 – zhanzezhu
@zhanzezhu在插入/刪除你只使用用戶名和類型。等級只是一個視覺(暗示人類)。 – user272735