SQLExec("select case when SQLTABLENAME = ' ' then 'PS_' || RECNAME else SQLTABLENAME end from PSRECDEFN where RECNAME = :1", UO_PLSQL.RECNAME, &SourceTable); SQLExec("select case when SQLTABLENAME = ' ' then 'PS_' || RECNAME else SQLTABLENAME end from PSRECDEFN where RECNAME = :1", UO_PLSQL.TABLE_NAME, &AuditTable); Local string &ColumnListNew = GetFields(&AuditTable, "NEW"); Local string &ColumnListOld = GetFields(&AuditTable, "OLD"); UO_PLSQL.TRIGGERCODE = ""; UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | "create or replace trigger " | UO_PLSQL.TABLE_NAME | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " after "; rem generate the after clause ; &OrText = ""; If UO_PLSQL.BTN_ADD = "Y" Then UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | &OrText | "insert "; &OrText = "or "; End-If; If UO_PLSQL.BTN_UPDATE = "Y" Then UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | &OrText | "update "; &OrText = "or "; End-If; If UO_PLSQL.BTN_DELETE = "Y" Then UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | &OrText | "delete "; &OrText = "or "; End-If; rem standard trigger code; UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " on " | &SourceTable | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " for each row" | Char(13) | Char(10) | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | "declare V_AUDIT_OPRID varchar2(64);" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " AuditOPRID varchar2(64);" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " AuditMoreData varchar2(1024);" | Char(13) | Char(10) | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | "begin" | Char(13) | Char(10) | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " dbms_application_info.read_client_info(V_AUDIT_OPRID);" | Char(13) | Char(10) | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " AuditOPRID := get_ps_oprid(V_AUDIT_OPRID);" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " if AuditOPRID = '!NoOPRID' then" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " AuditMoreData := UO_GET_SESSION_INFO();" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " else" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " AuditMoreData := ' ';" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " end if;" | Char(13) | Char(10) | Char(13) | Char(10); If UO_PLSQL.BTN_ADD = "Y" Then UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " if inserting then" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " insert into " | &AuditTable | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " values ( AuditOPRID, systimestamp, 'A', AuditMoreData" | &ColumnListNew | ");" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " end if;" | Char(13) | Char(10) | Char(13) | Char(10); End-If; If UO_PLSQL.BTN_UPDATE = "Y" Then UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " if updating then" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " insert into " | &AuditTable | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " values ( AuditOPRID, systimestamp, 'K', AuditMoreData" | &ColumnListOld | ");" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " insert into " | &AuditTable | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " values ( AuditOPRID, systimestamp, 'N', AuditMoreData" | &ColumnListNew | ");" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " end if;" | Char(13) | Char(10) | Char(13) | Char(10); End-If; If UO_PLSQL.BTN_DELETE = "Y" Then UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " if deleting then" | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " insert into " | &AuditTable | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " values ( AuditOPRID, systimestamp, 'D', AuditMoreData" | &ColumnListOld | ");" | Char(13) | Char(10); UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | " end if;" | Char(13) | Char(10) | Char(13) | Char(10); End-If; UO_PLSQL.TRIGGERCODE = UO_PLSQL.TRIGGERCODE | "end " | UO_PLSQL.ITEMNAME | ";" | Char(13) | Char(10);