Hej Du behöver skriva rollback oxå. Och du kanske vill göra detta även för update?trigger - problem
Kollar på en trigger som ska skydda användare från att editera i en tabell. Användaren får meddelandet om att han inte får ändra i tabellen (står i koden) . Men ändringen slår igenom ändå.
Jag vill att triggern ska avbryta hela transaktionen. Jag har nog glömt något...
create or replace trigger "IDOK5".cdrppcls_ins_grants before insert on cdrppcls
for each row
declare
grp varchar2(20);
cnt1 number(2);
cnt2 number(2);
begin
--
-- Denna trigger kollar om användaren har rättighet
-- att göra sin insert på CDRPPCLS
--
-- Först kollar vi om rörklassen som sätts in
-- är en av de som man måste ha speciella rättigheter för.
--
select count(*) into cnt1
from cotlooks
where key01 = 'PIPECLASS'
and key02 = 'RIGHTS'
and key03 = :new.pcls;
if cnt1 > 0 then
--
-- Ta reda på vilken grupp man måste vara med i
-- för att få sätta in i denna rörklass
--
select value1 into grp
from cotlooks
where key01 = 'PIPECLASS'
and key02 = 'RIGHTS'
and key03 = :new.pcls;
--
-- Kolla sedan om användaren är med i denna grupp
--
select count(*) into cnt2
from retususs
where user_shortname = user
and group_shortname = grp;
--
-- Om inte, returnera ett fel
--
if cnt2 = 0 then
raise_application_error(-20001,'CDRPPCLS Rights: You do not have the rights to perform that action!');
end if;
end if;
end;Sv: trigger - problem
if cnt2 = 0 then
ROLLBACK TRANSACTION
raise_application_error(-20001,'CDRPPCLS Rights: You do not have the rights to perform that action!');
end if;