PRE-DELETE TRIGGER ERROR

I am debugging a program written by Developer/2000 forms 4.5
I use 3 to 4 base tables and they all have parent/child relatioship.
When i try to delete one of them , the error is : pre-delete trigger error.
any idea ?

Hi, Lesley
Beware:
your form_success test is not working.
The form_success, form_failure and form_fatal functions should only be used to test the outcome of Forms Built-ins.
If you want to test the result of DELETE statements, try:
DELETE FROM TABLE
WHERE CONDITION;
IF SQL%FOUND THEN
MESSAGE('Some rows were deleted');
ELSE
MESSAGE('No rows were deleted');
END IF;You can also use SQL%ROWCOUNT to know how many rows were deleted.
Hope this helps,

Similar Messages

  • PAYMENT 처리시 PRE-INSERT TRIGGER (VALUE_ERROR)

    제품 : FIN_AP
    작성날짜 : 2005-05-10
    11.0.3 - PAYMENT 처리시 PRE-INSERT TRIGGER (VALUE_ERROR)
    ==============================================
    PURPOSE
    Problem Description
    Payment 화면에서 특정 Invoice 선택 후 저장 시 아래와 같은 Error Message 가 발생함.
    Payment 화면에서 Invoice 선택 후 저장 시 FRM-40735 PRE-INSERT TRIGGER ERROR 가 발생함.
    Workaround
    해당 Form Version이 110.83 이전 Version일 경우 아래와 같이 Code fix 한다.
    1. Payment Form Source File (APXPAWKB.fmb)는 backup 받아 놓습니다.
    2. Oracle Forms 에서 해당 Form Source File 을 열어 아래 부분을 수정 합니다.
    'ADJ_INV_PAY_PROC_INSERT' package 의 'SUB_PRE_INSERT' procedure 를 찾아 l_inv_remit_to 의 length를 80 으로 수정 합니다.
    Example)
    ->수정 전
    procedure SUB_PRE_INSERT is
    l_withhold_amount NUMBER;
    l_awt_success VARCHAR2(2000);
    l_pipe_name          VARCHAR2(2000);
    l_inv_remit_to     VARCHAR2(25); --> 변경 해야 할 부분
    ->수정 후
    procedure SUB_PRE_INSERT is
    return_value VARCHAR2(30);
    l_withhold_amount NUMBER;
    l_awt_success VARCHAR2(2000);
    l_pipe_name          VARCHAR2(2000);
    l_inv_remit_to     VARCHAR2(80);
    3. 위와 같이 수정 후 해당 Form Source 를 Compile 하고 Generate 합니다.
    4. 다시 해당 Payment에 대해서 Invoice 를 Apply 해서 Error 가 발생하는지 여부를 확인 합니다.
    Solution Description
    11.0.3 AP D Patchset 이상을 적용한다.
    Reference Documents
    Bug 921350

    Navigation is not allowed in this kind of triggers.
    PRE-INSERT is used to, for instance, put values on non NULL column in the current record.
    If you want to navigate in the records, choose another trigger, like KEY-COMMIT for example.
    Francois

  • Error from Pre-Insert Trigger

    I am using the following code in Pre-insert trigger
    purpose is that all the record which do not click by mouse (check box)
    should be cleared on the screen when commit/save.
    declare
    begin
    go_block('Bl');
    first_record;
    loop
    if :kcheck is null then
    clear_record;
    else
    Exit When :System.Last_Record = 'TRUE';
    Next_Record;
    end if;
    end loop;
    end;
    it is showing error FRM-40737
    illegal restiricted procedure NEXT_RECORD in pre-insert trigger
    when I used this code in when button press trigger it is working.????
    Message was edited by:
    Kami

    Navigation is not allowed in this kind of triggers.
    PRE-INSERT is used to, for instance, put values on non NULL column in the current record.
    If you want to navigate in the records, choose another trigger, like KEY-COMMIT for example.
    Francois

  • Update Table statement in pre-commit trigger

    Hi,
    I would need to update one table before commit in the form and hence I need to write an update table statement in pre-commit trigger. Can anyone help me with the sample code or how sould i be able to write a Update table statement from form-level trigger. Normal update statement is throwing me errors.
    Thanks in adv

    I wouldn't recommend the PRE-COMMIT trigger unless it is your requirement to execute the UPDATE statement every time the form commits, whether it is updating or inserting or deleting.
    Other wise you can use the PRE-UPDATE, PRE-DELETE and PRE-INSERT triggers; for this case you create a procedure under Program Units node in the Form's navigator that includes your "UPDATE" SQL statement and you call this procedure from the triggers you need to execute it from.
    Example:
    PROCEDURE UPDATE_MYTABLE IS
    BEGIN
      UPDATE MYTABLE SET MY_COLUMN1 = MY_VALUE1,
                                       MY_COLUMN2 = MY_VALUE2,
                                       MY_COLUMN3 = MY_VALUE3
      WHERE ... condition;
    END;
    PRE-UPDATE trigger code:
    BEGIN
      UPDATE_MYTABLE;
    END;Try it and let us know if this is your requirement.
    Tony
    Edited by: Tony Garabedian on Sep 5, 2008 10:29 AM

  • Retrieving old column values from a after delete trigger dynamically

    I have a single audit table for deletions
    and the table structure has the following columns
    1: table_name
    2: column_name
    3: column_value
    I am writing a trigger on tables for which i want to have delete audits and i am dynamicaly
    retrieving the column names but i am unable to retrieve the column value dynamically;
    I tried to use the following statement but doesn't return the column value
    sql_stmt:= 'select :1 from dual';
    execute immediate sql_stmt into col_value using
    ':old.'| |v_col_name;
    where v_col_name is the name of the column which i retrieve dynamically using the
    dbms_sql.describe_columns procedure.
    Is their any way if i can retrieve the old column values in the trigger dynamically if i already
    have the column names in variables..
    Thanks in advance.
    null

    I don't know if Kevin's tip Help Mr. Sameer, but it did help me gain access to pre-deleted row column values.
    I did discover, however, that if the columns from the about-to-be-deleted row are used as inserts into another table, Oracle serves up a nasty-gram informing the user that values from the about-to-be-deleted table are unreliable.
    I was able to circumvent this constraint by assigning the about-to-be-deleted column values to local PL/SQL varables, then perform the insert using the variable values.
    -Bill McNamee
    NHDOT
    [email protected]

  • Instead of delete trigger rows deleted

    Hi All.
    Im using a few instead of triggers over a view. The view selects data from other tables and merges them together. This view essentially forms the parent of a few one2one relationships with other tables.
    However my application doesnt know its a view (im using hibernate orm framework) - so when I delete this object which is mapped to a view, I get an error saying that no records where deleted. Also, if i test in sqlplus, i get "0 rows deleted" in response to a delete - which of course is true, but i want it to say 1 or some number of my choice.
    How can i modify my "instead of delete" trigger so that the number for records deleted count returned to caller is 1, or some number i can define?
    Here is my current trigger...
    create or replace
    trigger product_view_delete_trigger
    instead of delete
    on product_view1
    for each row
    begin
    null;
    end;
    Thanks.

    In regards to why Im using a view - its discussed here...
    Crazy Union across 3 tables
    The view im using is not updatable - it uses a union. I use "instead of triggers" to trick my application into thinking its a real table which is insertable. And this works fine.
    Im having trouble tricking my application into think that the delete was successful, because the "instead of delete" trigger doesnt actually delete anything - which is what i wnat - but i want it to report back to the caller that a delete occurred.
    I want the SQL%ROWCOUNT to be set to 1 or whatever. Perhaps this is not hte variable, but im hoping there is some variable I can set which is used to report back to the client as to how many records were deleted.
    thx.

  • Problem with forms6i using Pre-Insert Trigger

    I created a block level pre-insert trigger to do some validations and when I save the first time with wrong data it is working fine and popping up alerts that I defined but if I press save the second time it is saving even though the data is wrong.
    This is in Applications 11.5.10 using all the property classes and running on the server.
    I created exact replica of the form(no applications, property classes
    just basic form but with same functionality) and ran it on my local machine it is working fine. It is giving error till the data is fixed.
    Anybody know why?
    Thanks in advance

    It did not work. It is still doing the samething. Actually it is popping up my alerts but saving the record first time itself. Is there any way I can tell it not to save if the data is wrong. My code is below it basically pops up the alerts but doesn't tell anywhere not to save it.
    Thanks
    VJ
    declare
         v_amount number;
         alert_id      ALERT := Find_Alert('amount_from');
         alert_id1 ALERT := Find_Alert('amount_to');
         dummy_var NUMBER;
    begin
         select max(ssibe_amount_to) into v_amount from ssibe_orderappr_tab where
              ssibe_account_number = :ssibe_orderappr.ssibe_account_number;
              if :ssibe_orderappr.ssibe_amount_from <= v_amount
              then
                   Set_Alert_Property(alert_id, ALERT_MESSAGE_TEXT, 'Amount_From should be greater than '|| v_amount);
                   dummy_var := Show_Alert(alert_id);
              else
                   IF (:SSIBE_ORDERAPPR.SSIBE_AMOUNT_TO <= :SSIBE_ORDERAPPR.SSIBE_AMOUNT_FROM)
                   THEN
                   dummy_var := Show_Alert(alert_id1);
                   end if;
              end if;
    end;

  • FRM-40735:PRE-FORM trigger raise unhandled exception ORA-04067

    FRM-40735:PRE-FORM trigger raise unhandled exception ORA-04067:not executed, stored, procedure "PUBLIC.FND_TIMEZONES" does not exist.
    After I log into Applications, and when I click on responsibility, and when I'm in the Form to retreive the Navigator page, I got the above error.
    If I click on any one of the menu from the list, I automatically gets log off. "your logon session has become invalid".
    please help..

    Hi,
    Yes this was working befor enable rapid clone feature.How did you enable this feature? Did you apply any patches?
    Following Task has been made by me:
    Enable Rapid Clone Featue -------> execute pre clone -------> change IP and Hostname --------> execute post clone-----------> change has been made sucessfully.
    APPS.FND_TIMEZONE package is not avaliable .What does this query return?
    SQL> select object_name, object_type, owner
    from dba_objects
    where object_name = 'FND_TIMEZONES';Regards,
    Hussein

  • Pre-Insert Trigger not firing

    Hi,
    I am using Oracle 10G DS with Oracle 11G XE. I tried PRE-INSERT Trigger with the Code given by Mr Hamid. However, its not working. Though, the WHEN-NEW-ITEM-INSTANCE works fine, I wish to use PRE-INSERT Trigger only.
    Can you please help me.
    My Code is shown below
    BEGIN
    SELECT asset_id_seq.nextval INTO :r_it_blk.asset_id
    FROM dual;
    END;
    Thanks in advance
    Ramesh

    Hi Hamid,
    Thank you very much for your reply.
    I tried at Block Level itself. Further, I also tried the below Code with Cursor (Block Level). Unfortunately, it is also not working. Even the Error Message is also not displayed. The User has full privileges.
    DECLARE
         CURSOR next_id IS SELECT asset_id_seq.NEXTVAL FROM dual;
    BEGIN
         OPEN next_id;
         FETCH next_id INTO :r_it_blk.asset_id;
         CLOSE next_id;
         IF :r_it_blk.asset_id IS NULL THEN
         Message('Error Generating Next Asset ID');
         RAISE Form_Trigger_Failure;
         END IF;
    END;
    Regards
    Ramesh

  • How to make before delete trigger

    Hi all
    I want make before delete trigger
    I have 2 tables hr_api_transactions and new_table
    when I delete records from hr_api_transations table
    then that deleted record should be stored/insert in new_table table
    for that purpose I need before delete trigger
    How can I make It?

    Hi
    I have written following code but it gives an error
    CREATE OR REPLACE TRIGGER before_delete_trigger
        BEFORE DELETE
            ON HR_API_TRANSACTIONS
            FOR EACH ROW
        DECLARE
        BEGIN
            delete from new_table where new_table.name = OLD.hr_api_transactions.api_addtnl_info;
        END;
    TRIGGER BEFORE_DELETE_TRIGGER compiled
    Errors: check compiler logafter show errors it shows
    4/54 PL/SQL: ORA-00904: "OLD"."HR_API_TRANSACTIONS"."API_ADDTNL_INFO": invalid identifier
    4/9 PL/SQL: SQL Statement ignoredhere hr_api_transaction is table which contain API_ADDTNL_INFO column
    and name column of new_table and API_ADDTNL_INFO column of
    HR_API_TRANSACTIONS table are same

  • Help on delete trigger

    Hi all,
    I have a situation like this
    I have a table like
    SQL> desc system_user
    Name Null? Type
    ID NOT NULL NUMBER(12)
    USER_ID NOT NULL VARCHAR2(30)
    SQL> SELECT * FROM SYSTEM_USER
    2 ORDER BY CTUT_ID;
    CTUT_ID CURRENT_USER_ID
    1 KTYLOR
    2 EXAMPLE
    3 SCOTT
    SQL> DESC ALL_USERS;
    Name Null? Type
    USERNAME NOT NULL VARCHAR2(30)
    USER_ID NOT NULL NUMBER
    CREATED NOT NULL DATE
    What i need to do is i need to have before delete trigger to check the following condition when user try to delete a record in table
    SYSTEM_USER
    1) suppose user is trying to delete a record "SCOTT" IN TABLE
    SYSTEM_USER
    CONDITION SHOULD CHECK THAT IF USER_NAME EXITS IN TABLE "ALL_USER"
    1)IF HE EXITS THEN RAISE ERROR
    2)IF HE IS NOT EXITS THEN DELETE THE RECORD IN TABLE "SYSTEM_USER"
    SO I WROTE A CODE FOR TRIGGER
    SQL> CREATE OR REPLACE TRIGGER TIBD_USER
    2 BEFORE DELETE ON SYSTEM_USER FOR EACH ROW
    3 DECLARE
    4 FOUND_USER NUMBER(2);
    5 BEGIN
    6 SELECT COUNT(*) FROM ALL_USERS
    7 WHERE USERNAME = :OLD.USER_ID;
    8 IF FOUND_USER = 0 THEN
    9 DELETE FROM SYSTEM_USER
    10 WHERE ROWID := :NEW.ROWID;
    11 ELSE
    12 RAISE_APPLICATION_ERROR(-20000,'USER FOUND IN ALL_USERS TABLE');
    13 END IF;
    14 END TIBD_USER;
    15 /
    Warning: Trigger created with compilation errors.
    SQL> SHOW ERRORS
    Errors for TRIGGER TIBD_USER:
    LINE/COL ERROR
    7/1 PL/SQL: SQL Statement ignored
    8/13 PL/SQL: ORA-00920: invalid relational operator
    ANY HELP PLEASE

    1 CREATE OR REPLACE TRIGGER TIBD_USER
    2 BEFORE DELETE ON SYSTEM_USER FOR EACH ROW
    3 DECLARE
    4 FOUND_USER NUMBER(2);
    5 BEGIN
    6 SELECT COUNT(*) INTO FOUND_USER FROM ALL_USERS
    7 WHERE USERNAME = :OLD.USER_ID;
    8 IF FOUND_USER = 0 THEN
    9 DELETE FROM SYSTEM_USER
    10 WHERE ROWID = :OLD.ROWID;
    11 ELSE
    12 RAISE_APPLICATION_ERROR(-20000,'USER FOUND IN ALL_USERS TABLE');
    13 END IF;
    14* END TIBD_USER;
    SQL> /
    Trigger created.
    WHEN I DELETE A RECORD IT IS GIVING ME THAT
    SQL> DELETE FROM SYSTEM_USER
    2 WHERE CTUT_ID = 3;
    DELETE FROM SYSTEM_USER
    ERROR at line 1:
    ORA-04091: table SYSTEM_USER is mutating, trigger/function may not see it
    ORA-06512: at "TIBD_USER", line 7
    ORA-04088: error during execution of trigger 'TIBD_USER'

  • FRM-40735:PRE-FORM trigger raised unhandled expception ORA-06508-SATYAM

    Hi,
    This is Sateesh, presently working on Designer migration project from Designer 2000 V1.3.2 to Designer 10g with headstart.I successfully completed the migration of repository from 1.3.2 to 6i and also migrated the headstart to 6i using simple upgrade method.After this i successfully migrated the repository from 6i to 10g and I compiled all the libraries using forms10g and then i generated all the 10g forms through designer.then 10g forms and libraries are deployed in Oracle Application Server and then we are trying to access the application then we are getting the messsage for most of the forms, i.e FRM-40735:PRE-FORM trigger raised unhandled expception ORA-06508. Can you please help me out in this regard.
    Regards
    K.Sateesh Kumar

    Yes,
    that's right. FRM-40735 is a generic error message generated in case of form failure.
    This may be as a result of failure while calling sub-programs in a form or any other problem.
    For my case I had a call to a built in Package for which the user didnt have the privileges to execute that package.
    So how did I find out?
    EXCEPTION
    WHEN OTHERS THEN
    MESSAGE('SQLERRM: ' || SQLERRM);
    exception handling does the trick. I got the real error that was causing the problem.
    Error was: SQLERRM: xxx package does not exist. This made me think in the lines of either privileges or synonym problem. I found out that the user in the db doent have the execution privileges.
    GRANT ALL ON xxxpackage TO xxxuser;
    This is a nice forum. I love it and thanks to everyone.

  • Before delete trigger and foreign key relationship

    Hi,
    I am analysing one database for migration. On one parent table there is before delete trigger , to delete records from child. Also there is foreign key relationship on child table for this parent table.
    When I am deleting a row from parent, message gets displayed as "there are child records found."
    I would like to know, if there is foreign key relatioship then delete trigger on parent does't work, what is exactly happening?

    Could you post that trigger code and the Oracle version as well?
    With basic assumptions, I can't reproduce what you have stated here.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    SQL> create table parent (id number primary key);
    Table created.
    SQL> create table child (id number);
    Table created.
    SQL> alter table child add constraint fk_parent foreign key (id) references parent;
    Table altered.
    SQL> create or replace trigger bdr_parent
      2  before delete on parent
      3  for each row
      4  begin
      5  delete from child where id = :old.id;
      6  end;
      7  /
    Trigger created.
    SQL> insert into parent (id) values (1);
    1 row created.
    SQL> insert into child (id) values (1);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> delete from parent where id = 1;
    1 row deleted.
    SQL> select * from parent;
    no rows selected
    SQL> select * from child;
    no rows selected
    SQL> rollback;
    Rollback complete.
    SQL> alter table child drop constraint fk_parent;
    Table altered.
    SQL> alter table child add constraint fk_parent foreign key (id) references parent on delete cascade;
    Table altered.
    SQL> delete from parent where id = 1;
    delete from parent where id = 1
    ERROR at line 1:
    ORA-04091: table SCOTT.CHILD is mutating, trigger/function may not see it
    ORA-06512: at "SCOTT.BDR_PARENT", line 2
    ORA-04088: error during execution of trigger 'SCOTT.BDR_PARENT'
    SQL>

  • How to delete the error message in Adapter?

    I got one error record stuck in destination JDBC adapter. Is it possible for me to delete the error record?

    Hi Elliot,
    SXMB_ADM
    Integration Engine Configuration
    Specific Configuration
    Category: DELETION
    Parameters: PERSIST_DURATION, PERSIST_DURATION_ERROR
    Subparameters: SYNC, ASYNC
    Change "Current Value".
    and execute your delete job again!
    Regards,
    Udo

  • Get Current SQL in Before delete trigger

    Hi,
    I have created a before delete trigger to track which records are deleted from a table I need to know what statements fires the trigger. can someone please describe how I can retrieve the current SQL.
    using sys_context('userenv','CURRENT_SQL') returns null for CURRENT SQL
    Note:
    For me the easier is to enable auditing and audit delete on the table however at the moment I cant get a downtime from the business to bounce the database to enable auditing.
    CREATE OR REPLACE TRIGGER before_delete BEFORE DELETE
    ON AUDIT_TEST_TAB
    FOR EACH ROW
    DECLARE
    v_username varchar2(50);
    v_stmt varchar2(255);
    v_client_info varchar2(200);
    v_os_user varchar2(50);
    v_machine varchar2(50);
    v_program varchar2(50);
    v_module varchar2(50);
    v_auth_type varchar2(200);
    v_ip_addr varchar2(200);
    v_sql_statement VARCHAR2(4000);
    BEGIN
    SELECT sys_context ('USERENV', 'CURRENT_SQL')
    INTO v_sql_statement
    FROM dual;
    -----------insert into logging table statment ----
    end;

    A few comments.
    Lets assume you run a delete statement that deletes 550 rows from your table. If your trigger is working then the very same statement would be stored 550 times. I think an BEFORE or better an AFTER delete STATEMENT level trigger would be the better choice. Why AFTER? Because if the delete operation fails, for example because of existing child records, then everything is rolled back anyway to the implicit savepoint just before the delete.
    So to store the SQL statement the correct trigger would be an AFTER STATEMENT DELETE trigger.
    Now what to store: You want the sql statement. You could try to find the cursor/currently running SQL. It might be tricky to separate that from the SQLs that you run to find this out.
    It could even be possible to simply save all commands that are in your PGA/Cached cursor area. First find out yur session, then store the SQL_text (first 60 chars) for all the cursors in this session by using v$open_cursor or the first 1000 chars by using v$sql.
    Here are a few views that might be helpful. v$session , v$open_cursor, v$sql, v$sqltext, v$sql_bind_data, v$sql_bind_capture, dba_hist_sqltext

Maybe you are looking for

  • Returning files in trash file to original location

    Trash contains a huge number of files. They have not been deleted through the TRash Delete function. I want to know how I can return these files to their original location without moving each file by a manual approach. Does OSX preserve the original

  • How can I pass a value from Client to EntityImpl class?

    Hi everyone, I am using ADF BC to develop my Application. I want to do something in the EntityImpl class. My job needs a value from Client. I can't find any way to slove the problem. Is there anyone have an ideal, please tell me. Thanks, Tuan Vu Minh

  • Script to select files in a folder based on extension

    Does anyone have a script that would select files in a folder based on extension, then move the files somewhere else?

  • Animate dashed lines

    Hello, I need to animate dashes on quite complex circuits in Flash. I think the best tool to achieve this is Illustrator, by offsetting dashes. Here's what I got by duplicating paths and altering dashes on each copy. As you can see, it does the job b

  • SUBSTRING

    In the select query how to search for a particular part of data. (in ABAP code) Table         : ABC Field name    : Category Field content : Enterprise. Query : Select * from ABC where substr(category,1,3) ='Ent'. [The query should check the complete