Can a trigger be created on drop user event? if so, how do I write the the trigger - * I want to delete some rows related to that user from a table after drop user *
"Drop User"
Can you provide an example:
If the user is drop and oracle purge the user's schema objects is there anyway I can select what row of data I want to keep or delete?
So are you saying that a Trigger can not be created on drop user event?
Of course you can. Assuming you're actually dropping a user and not a table:
You're looking for a system trigger as opposed to a schema trigger or a database trigger. You can add these to a large number of ddl events including DROP.
To quote from the documentation:
Causes the database to fire the trigger whenever a DROP statement removes a database object from the data dictionary.
Your trigger might look something like the following:
create or replace trigger tr_drop_user
before drop on database
begin
if dbms_standard.dictionary_obj_type = 'USER' then
insert into logs ( user, object_name )
values ( sys_context('USERENV','OS_USER') -- OS User doing the dropping
, dbms_standard.dictionary_obj_name -- name of object being dropped
);
end if;
end;
/
This uses the not particularly well documented dbms_standard package to work out what's happening. PSOUG has better documentation, in my opinion.
If you only want to do this for a specific schema rather than for the entire database use before drop on schema instead.
Just as a little side note I'm not convinced of the need to do this in a trigger. It would be better if you created a package with drop_user and create_user procedures that do everything you want in one place rather than disguising the logic in a trigger.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With