Child table foregin key contrain violation

Hi ,
1-I have a form containing parant and child table component
child table component becomes visible changes base on drop down present on form
After typing Id , drop down is change ..on its listener createchildtable row is created progarmmatically.
the form gets saved.
2-but after competing all record if i change the first field ID on parent table component and save i get child contrain violation error
What i had observerd that after 2 step my child table view object get current row becomes null
please help

You are deleting "parent" rows.
I am wondering about the locking of "child" table Message. Especially if your query plan shows spools (as noticed by Kev). Theoretically, it is possible that the spool has collected all information, then releases the locks on Message and starts
deleting rows from MessageData. If a "first" "child" row is added to Message for an existing MessageData row, then the delete of the corresponding no-longer-orphaned "parent" will fail.
If this is the case, then you have a choice to make. Which way do you want to resolve the problem? Do you want the insert to be blocked and possibly fail, or are you content with failure of your batch delete?
If you want the insert to be blocked, you could add locking hints to the Message table in the delete query, such as WITH (UPDLOCK, HOLDLOCK).
Gert-Jan

Similar Messages

  • Parent - child tables foreign key relation ship

    Hi All,
    we have 600 hundred tables ..i would like to print a hierarchial tree based on the foreigh key relathionship
    i tried my best but i couldnt.
    parent table
    child table 1
    childtable3
    child table 2
    and so
    Can somebody help me out with a query?
    Thanks,
    kt

    CREATE OR REPLACE FUNCTION get_child_tables (
    ptable VARCHAR2,
    powner VARCHAR2 DEFAULT 'SCOTT',
    plevel NUMBER DEFAULT 10
    RETURN stringarray
    -- -- create this ON SQL*PLUS "CREATE OR REPLACE TYPE STRINGARRAY AS TABLE OF VARCHAR2(50);"
    -- AUTHID CURRENT_USER
    PIPELINED
    AUTHOR DATE VERSION COMMENTS
    ======================================================================================
    [email protected] 26-OCT-2009 1.0 Developed to ease developers effort to find Nth level of Referential integrity
    ======================================================================================
    -- PURPOSE -> To find PARENT=> CHILD relational TABLE(S) in Oracle upto a depth max N Level.
    --SYNTAX TO USE
    SELECT * FROM TABLE( get_child_tables('DEPT','SCOTT',3)); Store this query in a file for your use
    SELECT * FROM TABLE( get_child_tables('EMPLOYEE')); Store this query in a file for your use
    -- RESULTS looks as below
    --1 => DEPT
    --2 => EMP
    --2 => EMP2
    --3 => EMP_CHILD
    --3 => EMP2_CHILD
    -- and so on
    --This can be leveraged to use in any oracle database REGION 10g having and above.
    --This FUNCTION gives formatted result of the Oracle 10g Hierarchical query result coded in the cursor
    --to find MASTER => CHILD relational TABLE(S) upto a depth max 10 Level.
    --The result of the PIPELINED function can be retrieved using Oracle new operator
    --TABLE(array name) in SQL query.
    --Due to the AUTHID CURRENT_USER compiler directive any user can use based on his/her access privileges on the database.
    --GRANT EXECUTE ON SCOTT.get_child_tables TO PUBLIC;
    --CREATE OR REPLACE PUBLIC SYNONYM get_child_tables FOR SCOTT.get_child_tables;
    IS
    atname stringarray := stringarray ();
    -- create this ON SQL*PLUS CREATE OR REPLACE TYPE STRINGARRAY AS TABLE OF VARCHAR2(50);
    vlevel NUMBER;
    vtname VARCHAR2 (50);
    nindex NUMBER := 0;
    bprocessed BOOLEAN := FALSE;
    CURSOR c1 (powner_in IN VARCHAR2, ptable_in VARCHAR2, plevel_in NUMBER)
    IS
    SELECT LEVEL, LPAD (' ', (LEVEL - 1) * 2, ' ') || pt AS "TNAME"
    FROM (SELECT a.owner w1, a.table_name pt, a.constraint_name c1,
    a.r_constraint_name r1, b.owner w2, b.table_name ct,
    b.constraint_name c2, b.r_constraint_name r2
    FROM all_constraints a, all_constraints b
    WHERE a.constraint_name = b.r_constraint_name(+)
    AND a.owner = b.owner(+)
    AND a.owner =
    UPPER (powner)
    -- Change Owner here while testing
    --AND A.r_constraint_name IS NULL
    AND a.constraint_type IN ('P', 'R')) v1
    START WITH pt =
    UPPER
    (ptable)
    -- Change your master table here while testing the QUERY
    CONNECT BY PRIOR ct = pt AND LEVEL <= plevel;
    -- Change lavel here while testing
    BEGIN
    atname.EXTEND;
    atname (1) := 'NOTHING';
    OPEN c1 (powner, ptable, plevel);
    LOOP
    bprocessed := FALSE;
    FETCH c1
    INTO vlevel, vtname;
    IF nindex > 1 AND atname (atname.LAST - 1) = vtname
    THEN
    --DBMS_OUTPUT.PUT_LINE('2 ==== vtname  ' ||vtname || '   '|| atname.count|| '   '||atname.last ||  '   '||atname( atname.last-1));
    bprocessed := TRUE;
    END IF;
    IF NOT bprocessed
    THEN
    nindex := nindex + 1;
    atname.EXTEND;
    atname (nindex) := vtname;
    PIPE ROW (vlevel || ' => ' || vtname);
    DBMS_OUTPUT.put_line ( ' **** nindex - atname( nindex) '
    || nindex
    || ' - '
    || atname (nindex)
    DLOG('ADDING ',vTname); A LOGGING ATONOMUS PROCEDURE FOR DEBUG PURPOSE
    END IF;
    EXIT WHEN c1%NOTFOUND;
    END LOOP;
    CLOSE c1;
    FOR i IN 1 .. atname.COUNT
    LOOP
    DBMS_OUTPUT.PUT_LINE('atname (i) ' ||atname (i));
    END LOOP;
    RETURN;
    EXCEPTION
    WHEN no_data_needed
    THEN -- THIS EXCEPTION HAS TO BE THERE TO GET THE FUCTION WORKABLE
    DBMS_OUTPUT.put_line (SQLERRM);
    RETURN;
    END get_child_tables;
    /

  • TIPS(9):PARENT-CHILD(FOREIGN KEY) 관계를 갖는 MASTER TABLE의 PRIMARY KEY 확인.

    제품 : SQL*PLUS
    작성날짜 : 1996-10-21
    TIPS(9) : PARENT-CHILD관계를 갖는 TABLE의
    PRIMARY key, FOREIGN key의 COLUMN 명과 POSITION 확인
    ==============================================================
    ** Name : Show_Position.Sql
    ** Usage : @Show_Positions Parent_Table Child_Table
    ** Description : Shows Primary And Foreign Key Positions
    ** WARNING : 이 문장은 해당 Table의 Constraint생성시 Naming
    ** Convention을 따른 경우에 적용되도록 되어 있다.
    SET VERIFY OFF
    CLEAR BREAK
    BREAK ON CONSTRAINT_NAME ON TABLES
    SELECT SUBSTR(CONSTRAINT_NAME,1,27) CONSTRAINT_NAME,
    SUBSTR(TABLE_NAME,1,15) TABLES,
    SUBSTR(COLUMN_NAME,1,15) COL_NAME,
    SUBSTR(POSITION,1,3) POSITION,
    SUBSTR(OWNER,1,7) OWNER
    FROM USER_CONS_COLUMNS
    WHERE TABLE_NAME = UPPER('&1')
    AND CONSTRAINT_NAME LIKE 'PK%'
    UNION
    SELECT SUBSTR(CONSTRAINT_NAME,1,27) CONSTRAINT_NAME,
    SUBSTR(TABLE_NAME,1,15) TABLES,
    SUBSTR(COLUMN_NAME,1,25) COL_NAME,
    SUBSTR(POSITION,1,3) POSITION,
    SUBSTR(OWNER,1,7) OWNER
    FROM USER_CONS_COLUMNS
    WHERE TABLE_NAME = UPPER('&2')
    AND CONSTRAINT_NAME LIKE 'FK%'
    ORDER BY 1 DESC , 4 ASC;
    < 실행 예 >
    SQL> @SHOW_POSITIONS EMP_SERVICE EMP_SERVICE_LOG
    CONSTRAINT_NAME TABLES COL_NAME POS
    PK_EMP_SERVICE EMP_SERVICE EMP_ID 1
    CUST_ID 2
    FK_EMP_SERVICE_LOG_EC EMP_SERVICE_LOG EMP_ID 1
    CUST_ID 2

    제품 : SQL*PLUS
    작성날짜 : 1996-10-21
    TIPS(9) : PARENT-CHILD관계를 갖는 TABLE의
    PRIMARY key, FOREIGN key의 COLUMN 명과 POSITION 확인
    ==============================================================
    ** Name : Show_Position.Sql
    ** Usage : @Show_Positions Parent_Table Child_Table
    ** Description : Shows Primary And Foreign Key Positions
    ** WARNING : 이 문장은 해당 Table의 Constraint생성시 Naming
    ** Convention을 따른 경우에 적용되도록 되어 있다.
    SET VERIFY OFF
    CLEAR BREAK
    BREAK ON CONSTRAINT_NAME ON TABLES
    SELECT SUBSTR(CONSTRAINT_NAME,1,27) CONSTRAINT_NAME,
    SUBSTR(TABLE_NAME,1,15) TABLES,
    SUBSTR(COLUMN_NAME,1,15) COL_NAME,
    SUBSTR(POSITION,1,3) POSITION,
    SUBSTR(OWNER,1,7) OWNER
    FROM USER_CONS_COLUMNS
    WHERE TABLE_NAME = UPPER('&1')
    AND CONSTRAINT_NAME LIKE 'PK%'
    UNION
    SELECT SUBSTR(CONSTRAINT_NAME,1,27) CONSTRAINT_NAME,
    SUBSTR(TABLE_NAME,1,15) TABLES,
    SUBSTR(COLUMN_NAME,1,25) COL_NAME,
    SUBSTR(POSITION,1,3) POSITION,
    SUBSTR(OWNER,1,7) OWNER
    FROM USER_CONS_COLUMNS
    WHERE TABLE_NAME = UPPER('&2')
    AND CONSTRAINT_NAME LIKE 'FK%'
    ORDER BY 1 DESC , 4 ASC;
    < 실행 예 >
    SQL> @SHOW_POSITIONS EMP_SERVICE EMP_SERVICE_LOG
    CONSTRAINT_NAME TABLES COL_NAME POS
    PK_EMP_SERVICE EMP_SERVICE EMP_ID 1
    CUST_ID 2
    FK_EMP_SERVICE_LOG_EC EMP_SERVICE_LOG EMP_ID 1
    CUST_ID 2

  • Cascade update of primary key in child tables

    Hi,
    We have a typical scenario in which the primary key has to propage to the child table into 3 levels. We are getting the no parent key exception if we create new data into the three tables using 3 level master detail relationship and execute commit operation. The following is the structure of the tables.
    Parent_table (sno number primary key, name varchar2(100));
    Child_table (fk_sno number primary key, name varchar2(100), foreign key (fk_sno) references parent_table(sno));
    GrandChild_table (sno number primary key, fk_sno number, name varchar2(100), foreign key (fk_sno) references Child_table(fk_sno));
    The requirement is to update fk_sno in child_table and grandchild_table with the trigger generated primary key sno in the parent_table.
    The application module is having the following structure
    parenttable
    |
    ----------childtable
    |
    -----------grandchild_table
    If we create new records into parent_table and child_table it is working fine when we commit the data. If we create another record into grandchild_table and commit data we are getting the foreign key violation exception. We are using composition in the association to update the modified values to refresh the data.
    Is there any problem in the data model to use fk_sno as primary key and foreign key in child_table.
    Thanks and Regards,
    S R Prasad

    Hmm, another example is CSKS, this logic was probably designed already in the 1980s...maybe it was seen beneficial to be able to select the currently valid record by using the primary key only (the first record where DATBI is larger than system date, not possible when DATAB is the key instead).
    Maybe there are better explanations. Why do you need to know this, just curious?
    Thomas

  • Update key in parent and child tables

    Situation:
    Parent table (p) has a PK, p.parent_id. Child table (c) has a FK c.parent_id which, of course, points back to PK, p.parent_id.
    I need to UPDATE the key in both tables but I am concerned about throwing a FK constraint violation. How does one get around this? Does one update the child first then the parent or vice versa? Seems either way a FK violation will occur...
    thank u.

    1) If you ever anticipate wanting to update a key, that key should not be the primary key of a table. Primary keys should be immutable. If this is going to happen with any regularity, you need to re-examine the underlying data model.
    2) If the constraints were declared to be deferrable, you would simply mark them as deferred, update both tables, and commit (at which point the constraint would be validated). If the constraints were not declared to be deferrable, you will probably need to end up dropping and re-creating one or the other (presumably as a deferrable constraint this time).
    Justin

  • How to insert record in child table with foreign key

    Hi,
    I am using Jdeveloper 11.1.2.0. I have two master table one child table.
    How to insert and update a record in child table with foreign key ?
    I have created VO based on three EO(one eo is updatable other two eo are references) by using joined query.
    Thanks in Advance
    Edited by: 890233 on Dec 24, 2011 10:40 PM

    ... And here is the example to insert using sequenceimpl by getting the primary key of the master record and insert master and detail together.
    Re: Unable to insert a new row with a sequence generated column id
    -Arun

  • How to get the primary key names right for child tables?

    I have a logical model with a parent table and two child tables. The engineering strategy is "table per child". The parent has an primary key attribute. This is a screen shot:
    https://lh5.googleusercontent.com/-iKMtA3Say5c/UIkG1iktgEI/AAAAAAAAAtc/mrwFeHm4gi4/s800/child_pk_log.png
    When I engineer the model I get two primary keys with the same name name, which is the name of the parent:
    https://lh3.googleusercontent.com/-N88a9VwoPKw/UIkG1spbXpI/AAAAAAAAAtY/eonf8WdUZ6I/s800/child_pk_rel.png
    The correct names would be CHILD1_PK and CHILD2_PK. I can change the relational model by applying the naming rules but the next engineering will trash the names again.
    How can I fix this?

    Hi,
    the problem with PK name is fixed in Data Modeler 3.2.
    You can change PK name in relational model it won't be changed on next engineering
    Philip

  • Modify Primary Key Value while present in child tables

    Hi,
    I have one master table having primary key "ESTNO" and 10 child tables having ESTNO as the part of their primary key / composit key. I need to update the value of ESTNO in a master and associated child tables. what should i do to accomplish this...
    Regards.

    I think the trigger is the best solution to a bad problem. Having just tested it, I can confirm that putting the code in the AFTER UPDATE ... FOR EACH ROW trigger does not require us to make the foreign key deferred (at least in 9.2, I assume that also applies in earlier versions).
    Cheers, APC
    ALTER TABLE t2 ADD CONSTRAINT t2t1_fk FOREIGN KEY (col2) REFERENCES t1(col1)
    SQL> CREATE OR REPLACE TRIGGER "APC_LOAD"."T1_AUR" AFTER
      2  UPDATE ON "APC_LOAD"."T1" FOR EACH ROW BEGIN
      3  IF :NEW.col1 <> :OLD.col1 THEN
      4     UPDATE t2
      5     SET t2.col2 = :new.col1
      6     WHERE t2.col2 = :old.col1;
      7  END IF;
      8* END ;
      9  /
    Trigger created.
    SQL> UPDATE t1 SET col1 = 1 WHERE rownum = 1;
    SQL> SELECT count(*) FROM t1 WHERE col1 = 1;
      COUNT(*)
             1
    SQL> SELECT count(*) FROM t2 WHERE col2= 1;
      COUNT(*)
             1
    SQL>  UPDATE t1 SET col1 = 87979 WHERE col1 = 1;
    1 row updated.
    SQL> SELECT count(*) FROM t2 WHERE col2= 1;
      COUNT(*)
             0
    SQL>
    SQL> SELECT count(*) FROM t2 WHERE col2= 87979;
      COUNT(*)
             1
    SQL>        

  • Foreign-key autocreation in child table giving issue in the application

    Hi,
      I am facing an issue with partitioning a table that foreign key relationship is created on the original table with interim table. This gives exception in the application because of its existence. Please suggest me how to get rid of this issue.
    Let's say my table T_TABLENAME has to be partitioned. It has a child table T_CHILD_TABLENAME which references (FK_T1) ID column of T_TABLENAME.
    While partitioning, COPY_TABLE_DEPENDENTS function copies/creates the key/index/trigger objects for the interim table. [I need copy_constraints => TRUE in COPY_TABLE_DEP call], Fine.
    But, after partitioning is done, the foreign key (TMP$$_FK_T1) object exists with the child table which should absolutely not happen as this forms dependency with interim table as well along with parent table.
    Here my script goes:
    i) Creating interim table
    CREATE TABLE T_TABLENAME_PT
    PARTITION BY RANGE (CREATED_DATE)
    (PARTITION P_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','dd-MON-yyyy')),
    PARTITION P_2009 VALUES LESS THAN (TO_DATE('01-JAN-2010','dd-MON-yyyy')),
    PARTITION P_2011 VALUES LESS THAN (TO_DATE('01-JAN-2012','dd-MON-yyyy')),
    PARTITION P_2012 VALUES LESS THAN (TO_DATE('01-JAN-2013','dd-MON-yyyy')),
    PARTITION P_RECENT VALUES LESS THAN (MAXVALUE))
    AS SELECT * FROM T_TABLENAME WHERE 1=2;
    ii) Partitioning Script
    declare
      v_username varchar2(50);
      v_exception varchar2(220);
      l_num_errors PLS_INTEGER;
      v_source_table  varchar2(35) := 'T_TABLENAME';
      v_interim_table varchar2(35) := 'T_TABLENAME_PT';
    BEGIN
      select USERNAME into v_username from USER_USERS where rownum <= 1;
      begin
          DBMS_REDEFINITION.CAN_REDEF_TABLE(v_username, v_source_table, DBMS_REDEFINITION.CONS_USE_PK);
          DBMS_REDEFINITION.START_REDEF_TABLE(
            uname      => v_username,
            orig_table => v_source_table,
            int_table  => v_interim_table);
          DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(
            uname      => v_username,
            orig_table => v_source_table,
            int_table  => v_interim_table,
            copy_indexes => 1,
            copy_triggers => TRUE,
            copy_constraints => TRUE,
            copy_privileges => TRUE,
            ignore_errors => TRUE,
            num_errors => l_num_errors);
          DBMS_REDEFINITION.SYNC_INTERIM_TABLE(v_username, v_source_table, v_interim_table);
          begin
           DBMS_REDEFINITION.FINISH_REDEF_TABLE(
            UNAME      => v_username,
            ORIG_TABLE => v_source_table,
            INT_TABLE  => v_interim_table);       
         EXCEPTION
         WHEN OTHERS THEN
           DBMS_REDEFINITION.ABORT_REDEF_TABLE(
            UNAME      => v_username,
            ORIG_TABLE => v_source_table,
            INT_TABLE  => v_interim_table);
          end;     
          exception
              when others then
                v_exception :=substr(SQLERRM,1,150);
      end;
    exception
      when others then
        v_exception := substr(SQLERRM,1,175);
    END;

    Thanks for your information. I am using Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit.
    1) I am logging the exceptions in a logger table.
    2) If CAN_REDEF_TABLE gives exception, flow goes to the final EXCEPTION block and program terminates. So if no exceptions, the other steps comes into the flow of execution.
    Complete Details
    (1) Parent Table (existing): T_SOH_SUBREQ_INSTALLATION_ADDR
    create table T_SOH_SUBREQ_INSTALLATION_ADDR
      ACCOUNT_ADDRESS_ID  NUMBER(10),
      SUBREQ_ADDRESS_ID   NUMBER(10) not null,
      COMMUNITY_ID        NUMBER(10),
      STREET_ID           NUMBER(10),
      BUILDING_ID         NUMBER(10),
      CREATED_USER_ID     VARCHAR2(40) not null,
      MODIFIED_USER_ID    VARCHAR2(40) not null,
      CREATED_DATE        TIMESTAMP(6) not null,
      MODIFIED_DATE       TIMESTAMP(6) not null,
      DELETION_STATUS     CHAR(1) not null
    alter table T_SOH_SUBREQ_INSTALLATION_ADDR
      add constraint PK_T_SOH_SUBREQ_INST_ADDR primary key (SUBREQ_ADDRESS_ID);
    alter table T_SOH_SUBREQ_INSTALLATION_ADDR
      add constraint FK_T_SOH_SUBREQ_INSTALLATIO624 foreign key (ACCOUNT_ADDRESS_ID)
      references T_SOH_ACCT_INSTALLATION_ADDR (ACCOUNT_ADDRESS_ID);
    (2) Child Table (existing): T_SOH_SUBREQ_LINKED_INST_ADDR
    create table T_SOH_SUBREQ_LINKED_INST_ADDR
      CREATED_DATE      TIMESTAMP(6) not null,
      CREATED_USER_ID   VARCHAR2(40) not null,
      MODIFIED_DATE     TIMESTAMP(6) not null,
      MODIFIED_USER_ID  VARCHAR2(20) not null,
      DELETION_STATUS   CHAR(1) not null,
      SUBREQ_ADDRESS_ID NUMBER(10) not null,
      SUBREQUEST_ID     NUMBER(10) not null,
      CIRCUIT_POINT     NUMBER(10)
    alter table T_SOH_SUBREQ_LINKED_INST_ADDR
      add constraint PK_T_SOH_SUBREQ_LINK_INST_ADDR primary key (SUBREQ_ADDRESS_ID, SUBREQUEST_ID);
    alter table T_SOH_SUBREQ_LINKED_INST_ADDR
      add constraint FK_T_SOH_SUBREQ_LINKED_INST626 foreign key (SUBREQ_ADDRESS_ID)
      references T_SOH_SUBREQ_INSTALLATION_ADDR (SUBREQ_ADDRESS_ID);
    (3) Partitioning is done on Parent Table
    CREATE TABLE T_TMP_PARTITION_LOGS
      LOG_MSG  VARCHAR2(250),
      LOG_TIME TIMESTAMP(6)
    CREATE TABLE T_SOH_SUBREQ_INSTALL_ADDR_PT
    PARTITION BY RANGE (CREATED_DATE)
    (PARTITION P_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','dd-MON-yyyy')),
    PARTITION P_2009 VALUES LESS THAN (TO_DATE('01-JAN-2010','dd-MON-yyyy')),
    PARTITION P_2011 VALUES LESS THAN (TO_DATE('01-JAN-2012','dd-MON-yyyy')),
    PARTITION P_2012 VALUES LESS THAN (TO_DATE('01-JAN-2013','dd-MON-yyyy')),
    PARTITION P_RECENT VALUES LESS THAN (MAXVALUE))
    AS SELECT * FROM T_SOH_SUBREQ_INSTALLATION_ADDR WHERE 1=2;
    insert into t_tmp_partition_logs(log_msg,log_time) values('01_CreateTable: T_SOH_SUBREQ_INSTALL_ADDR_PT Table Created', systimestamp);
    (4) Script for REDEFINITION
    declare
      v_username varchar2(50);
      v_exception varchar2(220);
      l_num_errors PLS_INTEGER;
      v_source_table  varchar2(35) := 'T_SOH_SUBREQ_INSTALLATION_ADDR';
      v_interim_table varchar2(35) := 'T_SOH_SUBREQ_INSTALL_ADDR_PT';
      v_file_name     varchar2(20) := '02_Redefine';
    BEGIN
      insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name || '.sql --> Starts', systimestamp);
      select USERNAME into v_username from USER_USERS where rownum <= 1;
      insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name || ': UserName-'|| v_username, systimestamp);
      begin
          DBMS_REDEFINITION.CAN_REDEF_TABLE(v_username, v_source_table, DBMS_REDEFINITION.CONS_USE_PK);
          insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': '|| v_source_table ||' After CAN_REDEF_TABLE', systimestamp);
          DBMS_REDEFINITION.START_REDEF_TABLE(
            uname      => v_username,
            orig_table => v_source_table,
            int_table  => v_interim_table);
          insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': '|| v_source_table ||' After START_REDEF_TABLE', systimestamp);
          DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(
            uname      => v_username,
            orig_table => v_source_table,
            int_table  => v_interim_table,
            copy_indexes => 1,
            copy_triggers => TRUE,
            copy_constraints => TRUE,
            copy_privileges => TRUE,
            ignore_errors => TRUE,
            num_errors => l_num_errors);
          insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': '|| v_source_table ||' After COPY_TABLE_DEPENDENTS - l_num_errors:' || l_num_errors, systimestamp);
          DBMS_REDEFINITION.SYNC_INTERIM_TABLE(v_username, v_source_table, v_interim_table);
          insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': After SYNC_INTERIM_TABLE on '|| v_source_table, systimestamp);
          begin
           DBMS_REDEFINITION.FINISH_REDEF_TABLE(
            UNAME      => v_username,
            ORIG_TABLE => v_source_table,
            INT_TABLE  => v_interim_table);       
          insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': After FINISH_REDEF_TABLE on '|| v_source_table, systimestamp);
         EXCEPTION
         WHEN OTHERS THEN
           DBMS_REDEFINITION.ABORT_REDEF_TABLE(
            UNAME      => v_username,
            ORIG_TABLE => v_source_table,
            INT_TABLE  => v_interim_table);
           insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': Aborted '|| v_source_table, systimestamp);
          end;     
        insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||': '|| v_source_table ||' redefined', systimestamp);
          exception
              when others then
                v_exception :=substr(SQLERRM,1,150);
                insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||'-EXCEPTION:'|| v_source_table ||'-' || v_exception, systimestamp);
      end;
      insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||'.sql <-- Ends', systimestamp);
    exception
      when others then
        v_exception := substr(SQLERRM,1,175);
        insert into t_tmp_partition_logs(log_msg,log_time) values(v_file_name ||'-EXCEPTION:' || v_exception, systimestamp);
    END;
    ==> NOW THE ISSUE
    My child table T_SOH_SUBREQ_LINKED_INST_ADDR is having another foreign key column TMP$$_FK_T_SOH_SUBREQ_LIN4 with the interim table T_SOH_SUBREQ_INSTALL_ADDR_PT.

  • Finding foreign keys of a child table,grandchild and all dependendents

    Hi All,
    I just came up with this sceanrio
    I have to delete a record in a parent table with a condition provided will have to find all the child tables depends on it and should recursively find all the dependents of the child table.
    How to achieve this.Please help with a query or guide.Thanks in advance

    Thanks visakh it gave me an idea and this script helped me
    DECLARE @mytable VARCHAR(30) SET @mytable = 'test'
    DECLARE @RecordID VARCHAR(8)
    SET @RecordID = '00000001'
    DECLARE @Order INT SET @Order = 0
    DECLARE @Count INT
    declare @tblname varchar(100),@query NVARCHAR(max)
    if OBJECT_ID('tempdb..#OrderList','U') is not null
    DROP TABLE #OrderList
    CREATE TABLE #TEMP
    OrderNo INT,
    TableName VARCHAR(50)
    CREATE TABLE #OrderList
    RecordNo INT,
    OrderNo INT,
    TableName VARCHAR(50)
    INSERT INTO #TEMP
    VALUES ( @Order,
    @mytable )
    WHILE ( EXISTS(SELECT TableName
    FROM #TEMP
    WHERE OrderNo = @Order) )
    BEGIN
    SET @Order= @Order + 1;
    INSERT INTO #TEMP
    SELECT @Order,
    t1.TABLE_NAME AS PointsFrom
    FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS r
    JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t1
    ON t1.CONSTRAINT_NAME = r.CONSTRAINT_NAME
    JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t2
    ON t2.CONSTRAINT_NAME = r.UNIQUE_CONSTRAINT_NAME
    WHERE t2.table_name IN (SELECT TableName
    FROM #TEMP
    WHERE OrderNo = ( @Order - 1 ))
    END
    INSERT INTO #OrderList
    SELECT Row_number() OVER (ORDER BY OrderNo, TableName),
    #TEMP.OrderNo,
    #TEMP.TableName
    FROM #TEMP
    DROP TABLE #TEMP
    --SELECT * FROM #OrderList
    SET @Count = (SELECT Max(RecordNo)
    FROM #OrderList)
    WHILE (@Count <> 0 )
    BEGIN
    select @tblname = TableName FROM #OrderList WHERE RecordNo = @Count
    select @query = 'DELETE from '+ @tblname
    select @query
    exec sp_executesql @query
    SET @Count = @Count-1
    END

  • Update column data to Upper Case in parent and child table

    Hi ,
    I am facing issue while updating column value to upper case in parent table and child table. How can i do that ?
    when updating parent row:
    ORA-02292: integrity constraint (XXXXXXXXXXXXXX_FK) violated - child record found
    When updatng corresponding child row:
    ORA-02291: integrity constraint (XXXXXXXXXXXXXXXX_FK) violated - parent key not found
    how can i update on both the places ?
    Regards,
    AA

    I am facing issue while updating column value to upper case in parent table and child table. How can i do that ?
    Why do you need to do that?
    That is just ONE of several questions you should answer before you start modifying your data.
    1. What is your 4 digit Oracle version? (result of SELECT * FROM V$VERSION)
    2. If both values are the same case what difference does it make what that case is?hen you don't need to alter your original data.
    3. What is the source of the column values you are using now? If you change your data to upper case it will no longer be identical to the source data.
    4. What is your plan for enforcing future values to be stored in UPPER case? Are you going to use a trigger? Have you written and tested such a trigger to see if it will even work the way you expect?
    5. Why aren't you using a surrogate key instead of a 'business' data item? You have just demonstrated one reason why surrogate keys can be useful: their actual value is NOT important.
    You should reexamine your problem and architecture and consider other alternatives.
    One alternative is to add a new 'surrogate key' column to use as the primary key. Just create a new sequence and use a trigger to populate the new column. Your current plans will require a trigger to perform the case conversion so instead of the just use the trigger to provide the value.
    If the change is being done to facilitate searching you could just add a VIRTUAL column UPPER_MY_COLUMN and index that instead. Then you could search on that new virtual column and the data values would still be identical to the original data source.

  • Parent table of a child table

    I am using a child table 'CHILD_T' and in this table the column 'CHILD_FK' is the foreign key and it is pointing to some parent table. In my oracle editor I can see only synonyms but not actual tables. Is there any way to find out the parent table for this child table. Why I am asking this is because , I am getting below error while trying to execute the below script.
    Here I think my question is pretty simple but I would like to know how to find a parent table of a child table as I can see only synonyms instead actual tables.
    Script :
    INSERT INTO CHILD_T ( EM_ID, DFLT_COST_CNTR_TXT, ACCT_TYP_ID, DFLT_ORD_TYP_ID ) VALUES ('abcd', 'NA', '1', '1' );
    Error:
    SQL Error: ORA-02291: integrity constraint (AFM.USR_PROF_EM_ID) violated - parent key not found.
    Any one have any idea your help is well appreciated.

    select table_name  from user_constraints where constraint_name  in
        (select r_constraint_name from user_constraints  where constraint_name='YOUR_CONSTARINT_NAME');

  • Tbale Data Not picked from Child Table while configuring Database Adapter

    Hi,
    we are experiencing problem while picking multiple records from child table while polling from the database.
    details are, lets say we have one Parent table "Student (Id ,College) and one Child Table (Id,Book,Author)
    Id is Primary key in Student Table and Foregin in Child Table.Lets say data in tables are
    Student Table :196263,"Y.M.C.A"
    Child Table :196263,"English","Gill"
    196263 ,"Maths","Nagpal"
    Now what should be done while polling 1 record should be picked from student table and 2 diferent records from Child Table ..for the above given scenario...
    (I have used 1:M Relationship).
    But What is happening that from Child Table only first record got picked up 2 times..and record from Student Tablle was being picked correctly.....but in the ideal
    Cab anybody help me how to resolve this issues....

    Hi Gurus,
    I am facing similar kind of issue i.e. after polling on header table (Logical Delete), the header records are updated correctly.
    But the problem starts in child table. From Child Table only first record is getting picked up 2 times (if 2 rows are there for that particular header id).
    Kindly help.
    Thanks,
    Abhishek
    Edited by: Abhishek saurabh on Jul 31, 2009 1:09 AM
    Edited by: Abhishek saurabh on Jul 31, 2009 1:11 AM

  • Why is the child table inserting first in a composite association?

    Guys and Gals,
    Studio Edition Version 11.1.1.3.0.
    This one has gotten me all day. I have a child table which is inserting before its master table, even though the relationship is defined as a composite relationship.
    Process:
    1) User adds a part with a purchase price into the Part table.
    2) Via Part-PartHistories View Link, part is inserted into PartHistories.
    3) Via BPL-BPLRows View Link, part is inserted into BPLRows along with its purchase price. The part number is part of a composite primary key (BPL,PartNumber) and is a foreign key to the Part table.
    4) Via BPL-PL View Link, and then Via PL-PLRows View Link, part is inserted into PLRows along with its purchase price. The part number is part of a composite primary key (PL,PartNumber) and is a foreign key to the Part table.
    It is #4 which gives me an integrity constraint (PCS.PRICE_BUCKETS_PARTS_FK1) violated - parent key not found error. JDev is trying to insert in the order 4,1,2,3 when it should be 1,2,3,4. The kicker is that there is a composite association between #1 and #4 which should guarantee that 1 is inserted first. If I remove #4's process, steps 1-3 run fine. If I remove the composite association, JDev inserts correctly steps 1,2,3,4.
    Why is JDev trying to insert #4 first? I do a CreateInsert on the Parts table first so the creation order is correct. Furthermore, there is a composite association defined between Parts - PLRows.
    Something is indeed fishy in Denmark.

    LovettWB,
    You talk about VOs, but composite relationships need to be defined at the EO level. If you have indeed defined the proper composite associations, this sounds like a perfect test case to submit to Oracle Support to evaluate.
    If you do have the proper associations set up and things don't work, you could try [url http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/bcadveo.htm#CEGECADE]this technique as a workaround.
    John

  • Please help... Foregin key problem

    How come foregin key can't work? Someone please help me          
    This doesn't work. (Item not found)
    ==========================================================
    cursor my_cursor is
    Select USER_ID
    FROM NETWORK_ACCOUNT
    where v_gobal2= ID_NUMBER;
    begin          
    v_gobal2 := :CHECK_ID;
    open my_cursor;
    fetch my_cursor into v_gobal1;
    ==========================================================
    But how come if i change this line 'where v_gobal2= N_PASS;' or any not foregin key attribute, it work?
    By the way 'ID_NUMBER' is a foregin key on NETWORK_ACCOUNT table
    while 'N_PASS' is an attribute of the same table
    I dont understand??
    Below is my NETWORK_ACCOUNT create table
    CREATE TABLE "NETWORK_ACCOUNT"
    (     "USER_ID" VARCHAR2(20),
         "N_PASS" VARCHAR2(20) NOT NULL ENABLE,
         "ID_NUMBER" CHAR(10),
         "STAFF_NUMBER" CHAR(10),
         CONSTRAINT "NA_USER_ID_PK" PRIMARY KEY ("USER_ID") ENABLE,
         CONSTRAINT "IDNUMBER_FK" FOREIGN KEY ("ID_NUMBER")
         REFERENCES "IDCODE" ("ID_NUMBER") ON DELETE SET NULL ENABLE,
         CONSTRAINT "NA_STAFF_NUMBER_FK" FOREIGN KEY ("STAFF_NUMBER")
         REFERENCES "STAFF" ("STAFF_NUMBER") ON DELETE SET NULL ENABLE
    All i wan to is to get the user_id when user input ID_NUMBER

    your problem has nothing to do with Foreign-keys!!!
    Both the columns that you are using as FKs, you have defined them as "CHAR(10)" (well, because they are CHAR(10) in the parent/referenced tables). Had you defined them as VARCHAR2(10) both in child table (network_account) and the parent tables (idcode and staff), you'd have faced no problem. I m not sure why you are using CHAR(10) but if you change your code like this, it should work:
    original: where v_gobal2= ID_NUMBER;
    changed: where RPAD(v_gobal2,10) = ID_NUMBER;
    When column data type is defined as VARCHAR2, oracle does not store white spaces but in case of CHAR, Oracle will add white spaces if the input value is not of exat length.
    I'd strongly recommend you use VARCHAR2.
    Hope this helps!
    Saeed

Maybe you are looking for

  • Open Documet URL is not working

    Hi All, i have 2 reports A and B from e-fashion db. Breport is having prompt on CIty and report is having State. And i tried to open B report from A through the opendocument link it is saying "canot open link" message is displayed. Please check my UR

  • Bridge opens file in Camera Raw 7.0.  How can I open new version/beta of ACR?

    Just installed CS6 beta and when trying to open files from Bridge into ACR, I am taken to Camera Raw 7.0.  Afraid to uninstall all CS5 files until full version of CS6 is released.  Help?

  • Photoshop doesn't recognise my scanner with Mountain Lion

    When I go to scan in Photoshop, file, import to device, I get a blank dialog box with nothing but rotate button left and right. No "scan" button or "preview" or option" button, and no image of what's in the scanner.

  • Copy Control From Contract to Sales Order

    Dear All, I have created a Quantity Contract of 100 Target qty. I have created a Sales order with reference to the contract of 20 Order quantity and delivered 21 Delivered quantity. When I create another Order with reference to the Quantity Contract

  • Nav Buttons

    On my work page the nav bar looks perfect. when i view in safari or netscape, the nav bar buttons have small spaces between them. Anybody know why? thanks.