-- ************************************************************ -- *** Feel free to use this SQL-code, but please *** -- *** do not remove these copyright lines. *** -- *** (C) Roger Felix - Lund - Sweden *** -- *** [roger_felix@hotmail.com, web_master@work.utfors.se] *** -- *** URL: http://hem.fyristorg.com/publish/index.html *** -- ************************************************************ -- ** -- ** REQUIRED GRANTS: -- ** ~~~~~~~~~~~~~~~ -- ** grant select on SYS.V_$SESSION TO ?YOUR_USER?; -- ** grant select on SYS.V$SESSION TO ?YOUR_USER?; -- ** -- ** DESCRIPTION: -- ** ~~~~~~~~~~~~ -- ** THIS WILL CREATE A TRIGGER ON THE PROMPTED TABLE -- ** THAT PREVENTS UPDATES FROM OTHER SESSIONS. -- ** set verify off SET FEEDBACK OFF SET HEADING OFF PROMPT ...Checking grants... select 'YOU MUST HAVE GRANTS ON V_$SESSION' from dual where 0 = (select count(*) from USER_TAB_GRANTS_RECD where TABLE_NAME = 'V_$SESSION' and SELECT_PRIV = 'Y'); COLUMN U NEW_VALUE UN SELECT '&TABLE' U FROM DUAL; DEFINE table_name = &UN define csess = '-1' column sid new_value csess noprint select sid from v$session where audsid = userenv('sessionid'); CREATE OR REPLACE TRIGGER PREVENT_SESSIONS BEFORE INSERT OR UPDATE OR DELETE ON &table_name REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW DECLARE the_sid number; BEGIN select sid INTO THE_SID from v$session where audsid = userenv('sessionid'); -- *********************************** -- *** ADAPT FOR SESSION HERE: (!) *** -- *********************************** if THE_SID != &csess then raise program_error; end if; END; / select 'DON''T FORGET TO DROP TRIGGER PREVENT_SESSIONS' FROM DUAL; set verify on;