Foreign Keys referencing same Table

Post Author: Teddy
CA Forum: Data Connectivity and SQL
Hello!
One table i'm using to build my report has two foreign key fields ('start_id', 'target_id') referencing the same table 'city' (city_id, cityname).
When i try to generate the report both field contain the cityname the start_id is pointing to. Is there a way to also retrieve the correct cityname for target_id?
I'm not sure if this is a CR  or a DB design problem? The DB is not my work...

Post Author: Teddy
CA Forum: Data Connectivity and SQL
Hello!
One table i'm using to build my report has two foreign key fields ('start_id', 'target_id') referencing the same table 'city' (city_id, cityname).
When i try to generate the report both field contain the cityname the start_id is pointing to. Is there a way to also retrieve the correct cityname for target_id?
I'm not sure if this is a CR  or a DB design problem? The DB is not my work...

Similar Messages

  • Foreign keys to same table / Who columns in User table???

    Hi All,
    We are designing a database for our client and we are using common columns in all tables like CreatedBy and UpdatedBy which are foreign keys to USER table. My question is can we use these two columns in USER table and have the foreign key constraints to the same tables?
    USER table script will look like following..
    CREATE TABLE XX_USER
         User_ID                              VARCHAR2(10)
    ,     CreatedBy                         NUMBER(10)
    ,     UpdatedBy                         NUMBER(10)
    ,     User_Name                         VARCHAR2(100)     NOT NULL
    ,     Designation                         VARCHAR2(100)     NOT NULL
    ,     CONSTRAINT USER_ISACTIVE_CHECK CHECK (Is_Active in ('Y', 'N'))
    ,     CONSTRAINT USER_KEY PRIMARY KEY (User_ID),
    ,     CONSTRAINT USER_CREATED_BY FOREIGN KEY (CREATED_BY)
         REFERENCES XX_USER (USER_ID)
    ,     CONSTRAINT USER_UPDATED_BY FOREIGN KEY (UPDATED_BY)
         REFERENCES XX_USER (USER_ID)
    );I think what I am doing (the above script) is not correct. Could someone please suggest me how can solve this issue?
    Thanks in advance,
    Oraebs

    user8644385 wrote:
    We are designing a database for our client and we are using common columns in all tables like CreatedBy and UpdatedBy which are foreign keys to USER table. My question is can we use these two columns in USER table and have the foreign key constraints to the same tables?You can. After fixing synatx errors:
    SQL> CREATE TABLE XX_USER
      2  (
      3   User_ID        VARCHAR2(10)
      4  , CreatedBy     NUMBER(10)
      5  , UpdatedBy     NUMBER(10)
      6  , User_Name     VARCHAR2(100) NOT NULL
      7  , Designation   VARCHAR2(100) NOT NULL
      8  , Is_Active     VARCHAR2(1)
      9  , CONSTRAINT USER_ISACTIVE_CHECK CHECK (Is_Active in ('Y', 'N'))
    10  , CONSTRAINT USER_KEY PRIMARY KEY (User_ID)
    11  , CONSTRAINT USER_CREATED_BY FOREIGN KEY (CreatedBy)
    12       REFERENCES XX_USER(USER_ID)
    13  , CONSTRAINT USER_UPDATED_BY FOREIGN KEY (UpdatedBy)
    14       REFERENCES XX_USER(USER_ID)
    15  )
    16  /
    Table created.
    SQL> Now USER_ID is a string while CreatedBy/UpdatedBy is a number. Even though it is allowed, it limits USER_ID to numeric strings and causes implicit conversions while validating. So I would change CreatedBy/UpdatedBy data type to VARCHAR2(10).
    SY.

  • FOREIGN KEY CONSTRAINT 의 MASTER TABLE NAME 의 확인

    제품 : ORACLE SERVER
    작성날짜 : 1995-11-02
    FOREIGN KEY CONSTRAINT 의 MASTER TABLE NAME 의 확인
    ===================================================
    다음은 FOREIGN KEY CONSTRAINT 이름으로 REFERENCE 하는 TABLE
    (MASTER TABLE)을 찾는 SQL SCRIPT이다.
    col Primary_key_table format a20
    col Constraint_name format a20
    select a.object_name Primary_Key_table,
    c.name Constraint_name
    from dba_objects a,
    sys.cdef$ b,
    sys.con$ c
    where c.name = 'EMP_FOREIGN_KEY' -- CONSTRAINT NAME
    and b.con# = c.con#
    and b.robj# = a.object_id
    /

    The set of constraints as you show it is valid, but will likely result in a lot of violations since both child columns are larger than the parent. The Oracle 2256 error has nothing to do with data validation, nor with the different lengths of the columns. The documentation says
    02256, 00000, "number of referencing columns must match referenced columns"
    // *Cause: The number of columns in the foreign-key referencing list is not
    //         equal to the number of columns in the referenced list.
    // *Action: Make sure that the referencing columns match the referenced
    //          columns.Look at the actual statement that the client ran. It will be different than the one you posted. one of the two column lists will have more columns than the other.

  • Foreign keys at the table partition level

    Anyone know how to create and / or disable a foreign key at the table partition level? I am using Oracle 11.1.0.7.0. Any help is greatly appreciated.

    Hmmm. I was under the impression that Oracle usually ignores indices on columns with mostly unique and semi-unique values and prefers to do full-table scans instead on the (questionable) theory that it takes almost as much time to find one or more semi-unique entries in an index with a billion unique values as it does to just scan through three billion fields. Though I tend to classify that design choice in the same category as Microsoft's design decision to start swapping ram out to virtual memory on a PC with a gig of ram and 400 megs of unused physical ram on the twisted theory that it's better to make the user wait while it needlessly thrashes the swapfile NOW than to risk being unable to do it later (apparently, a decision that has its roots in the 4-meg win3.1 era and somehow survived all the way to XP).

  • Update primary key that’s also a foreign key in another table

    Hi Developers,
    I need to update the primary key for a record but it's also the foreign key in another table.
    Example,
    Table 1 Details
    Name : Parent_Table
    Columns : ID, Name, Age
    Primary Key : ID
    Table 2 Details
    Name : Child_Table
    Columns : ID, Parent_ID, Name, Age
    Primary Key : ID
    Foreign Key : Parent_ID (Primary Key in Parent_Table)
    Parent_Table
    ID Name Age
    1001 Sam 26
    1002 George 25
    Child_Table
    ID Parent_ID Name Age
    1010 1001 Sam 26
    1020 1002 George 25
    Now I want to update ID (1001) in Parent_table as 2001 and also, I want to update Parent_ID (1001) in Child_Table as 2001.
    How we will write the java code to update these columns.
    Thanks in advance.

    dcminter wrote:
    If you're looking at changing the primary keys in your data then there's probably something wrong with your data structure.Depends how you feel about business primary keys versus surrogates. Personally I prefer the latter so I'm with you in theory. In practice, however, a DB that uses a business PK may well find that it's a legitimate use case to change the key value (but then that's why I like surrogates in the first place!)Primary keys should not have meaning.

  • Delete a user from a table whose name is a foreign key in other tables

    Dear All;
    I am trying to figure out an easy way to do this. I just recently took someone application who utilized 500 tables. I am trying to delete a user from a table called member_table. However, I am having problems doing so because the user name is a foreign key in other tables which has a relationship with this member_table. I really can't naviagte through all 500 different tables and start deleting the user from each table . hence, I would like to figure out a way to delete the user from the member_table without getting the error message
    ORA - 02292 "Integrity Constraint (....) violated child record found

    Unless you want to find and re-create all of the FK's that point to that field so you can make them ON DELETE CASCADE (note it is the FK not the PK that has that attribute), you will need to either delete that member id from each of the child tables individually or update each one individually to either null or some valid value in member_table before you can delete the id from member_table.
    You can find all of the tables, and the corresponding column_name that have an FK relationship to memeber_table with the following:
    SELECT c.table_name, col.column_name
    FROM user_constraints c, user_cons_columns col
    WHERE c.constraint_name = col.constraint_name and
          c.r_constraint_name = (SELECT constraint_name
                                 FROM user_constraints
                                 WHERE table_name = 'MEMBER_TABLE' and
                                       constraint_type = 'P') and
         c.constraint_type = 'R';If there are a lot of these, you could use something similar to generate the set of delete/update statements that would be needed.
    John

  • Primary key and Foreign key on same column

    Hi, I am able to create below tables , primary and foreign keys as below.
    But Is this valid design? Can I define a column (ckey2 in table "child") as
    primary key and as well as foreign key?
    CREATE TABLE parent (
    col1 NUMBER,
    col2 NUMBER
    CREATE TABLE child (
    ckey1 NUMBER,
    ckey2 NUMBER,
    ckey3 NUMBER
    alter table parent add constraint parent_pk primary key( col1 );
    alter table child add constraint child_pk primary key( ckey2 );
    alter table child add constraint child_fk foreign key( ckey2 ) references parent( col1);
    Thanks.

    Can I define a column (ckey2 in table "child") as primary key and as well as foreign key?You mean you want to define a one-to-one relationship between parent and child tables.. why would you want to do that ? You might as well merge the 2 tables into one.

  • FOREIGN KEY CONSTRAINT의 MASTER TABLE을 REFERENCE하는 TABLE 찾기

    제품 : SQL*PLUS
    작성날짜 : 2003-12-17
    FOREIGN KEY CONSTRAINT의 MASTER TABLE을 REFERENCE하는 TABLE 찾기
    ================================================================
    Master table 이 dept2일 때, 이 테이블을 참조하는 table들을 찾는 SQL
    select x.table_name "reference table"
    from
    (select distinct r_constraint_name,table_name
    from all_constraints
    where constraint_type='R' ) x, all_constraints a
    where a.table_name = 'DEPT2'
    and x.r_constraint_name = a.constraint_name;

  • Generate Key by referencing same table?

    Is it OK to generate a Key by referencing the max + 1 of the same table using a trigger? Can anything go wrong? (I am fully aware that a sequence can be used instead but my co-worker is trying this other approach.)
    Sample Code:
    CREATE OR REPLACE TRIGGER trgTableA BEFORE INSERT ON TableA REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
    DECLARE
    iCounter TableA.SEQ_NUM%TYPE;
    BEGIN
    IF INSERTING THEN
    Select max(seq_num)+1 INTO iCounter FROM TableA;
    if (iCounter is null) then
              :new.SEQ_NUM :=1;
         else
              :new.SEQ_NUM := iCounter;
              end if;
    END IF;
    END

    e.g.
    SESSION 1:
    dw2@DWDEVA> DROP TABLE test;
    Table dropped.
    Elapsed: 00:00:00.00
    dw2@DWDEVA>
    dw2@DWDEVA> CREATE TABLE test
      2    (col1 number CONSTRAINT test_pk PRIMARY KEY);
    Table created.
    Elapsed: 00:00:00.00
    dw2@DWDEVA>
    dw2@DWDEVA> CREATE OR REPLACE TRIGGER trgTest
      2  BEFORE INSERT ON test REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
      3  DECLARE
      4    iCounter  test.col1%TYPE;
      5  BEGIN
      6    IF INSERTING THEN
      7      SELECT max(col1)+1
      8      INTO iCounter
      9      FROM test;
    10      IF iCounter is NULL
    11        THEN :new.col1 := 1;
    12      ELSE
    13        :new.col1 := iCounter;
    14      END IF;
    15    END IF;
    16  END;
    17  /
    Trigger created.
    Elapsed: 00:00:00.00
    dw2@DWDEVA>
    dw2@DWDEVA> INSERT INTO test VALUES(1);
    1 row created.
    Elapsed: 00:00:00.00
    dw2@DWDEVA> SELECT * FROM test;
          COL1
             1
    Elapsed: 00:00:00.00
    dw2@DWDEVA> INSERT INTO test VALUES(1);
    1 row created.
    Elapsed: 00:00:00.04
    dw2@DWDEVA> select * from test;
          COL1
             1
             2
    Elapsed: 00:00:00.00
    dw2@DWDEVA> --no commit
    SESSION 2:
    insert into test values(1);
    -- waits for session 1 to end transaction
    SESSION 1:
    COMMIT;
    SESSION 2:
    insert into test values(1)
    ERROR at line 1:
    ORA-00001: unique constraint (DW2.TEST_PK) violatedThis won't happen with sequences

  • FOREIGN KEY Constraint And Table Lock

    According to Db Concepts on Data Integrity->Types of Integrity Contraints->Referential Integrity Constraints, if the FK column is not indexed, delete/update of parent table would cause child table share locked.
    I can understand the reason behind this behaviour because if parent's PK is modified but not commited yet, we don't want another transaction to insert/update the child's FK column to use the deleted parent PK value and this requires a table share lock.
    The problem is, I don't understand why if the child's FK is indexed, no table share lock is acquired. The same condition could happen and we still need to prevent another transaction from using the uncommitted deleted PK in parent as the child's FK.
    Appreciate and advice.

    hi
    When PK column change, Oracle is going to have to do a
    referential integrity check on any referenced columns ,in
    the absence of an index on the child end of the foreign
    key, that would seem to result in a full table scan of the table which cause locks the entire table for any
    Delete or Update on Parent table.
    Khurram

  • How to create a foreign key for the table from two different tables?

    Hi All,
    I have a three table like below. In the below table SAMPLE_CONS_CHECK and SAMPLE_CONS2_CHECK will be having the primary key for NAME column. The same SAMPLE_CONS3_CHECK table also having the primary key for NAME column and forieign key for SAMPLE_CONS_CHECK and SAMPLE_CONS2_CHECK tables. See the below code 2
    code 1:
    CREATE TABLE SAMPLE_CONS_CHECK
            (NAME VARCHAR2(10),
            SERIES  VARCHAR2(5)
    CREATE TABLE SAMPLE_CONS2_CHECK
            (NAME  VARCHAR2(5),
             MODEL  NUMBER
    CREATE TABLE SAMPLE_CONS3_CHECK
            (NAME  VARCHAR2(5),
             MODEL_NO  NUMBER
            )code 2
    alter table SAMPLE_CONS_CHECK
    add constraint SAMPLE_CONS_CHECK_pk primary key (NAME)
    alter table SAMPLE_CONS2_CHECK
    add constraint SAMPLE_CONS2_CHECK_pk primary key (NAME)
    alter table SAMPLE_CONS3_CHECK
    add constraint SAMPLE_CONS3_CHECK_pk primary key (NAME)
    ALTER TABLE SAMPLE_CONS3_CHECK ADD
    CONSTRAINT SAMPLE_CONS3_CHECK_FK1 FOREIGN KEY
         NAME
    ) REFERENCES SAMPLE_CONS_CHECK
        NAME
    ) ON DELETE CASCADE;
    ALTER TABLE SAMPLE_CONS3_CHECK ADD
    CONSTRAINT SAMPLE_CONS3_CHECK_FK2 FOREIGN KEY
         NAME
    ) REFERENCES SAMPLE_CONS2_CHECK
        NAME
    ) ON DELETE CASCADE;From the above schenario i am able to insert the data to SAMPLE_CONS3_CHECK table. But the parent data is already available in the parent table. The problem is here two different constarints from two different tables. While inserting, it is checking from both the tables whether the parent is exist or not.
    How can i solve this problem? Can anyone halp me about this?
    Thanks
    Edited by: orasuriya on Aug 8, 2009 2:02 AM

    Actually the design is completely incorrect.
    What you say is
    I have
    'foo', 'foo series'
    'foo','foo model'
    'foo',666
    By virtue of table3 referring to both table1 and table2.
    This means you actually need to have 1 (one) table:
    'foo','foo series','foo model', 666
    And the 'problem' disappears.
    Sybrand Bakker
    Senior Oracle DBA

  • How to alter or add foreign key constr to table having child rows or data

    Hi,
    I have a table by name DEPT in which the column DEPTNO is a primary key column and have data in it for all the columns . Now I have a EMP table where in the column DEPTNO is not having any constraint including foreign key constraint too. Now i have data in the EMP table for all the columns . now i would like to add the foreign key constraint to DEPTNO column in the EMP table referencing the DEPTNO column in the DEPT table. Both the table do not have any null values .
    I need to add the foreign key without deleting the data in the EMP table.
    Please advice.
    Regards,
    Vinesh

    Hi,
    I need to add the foreign key without deleting the data in the EMP table.Foreign key constraint can have only those values which are present in the primary key of the parent table or null.
    When your tables are populated with values and then you are adding the constraint then,
    the parent table data is only present in child table or null values.
    Example
    SQL> create table emp_bkp as select * from emp;
    Table created.
    SQL> create table dept_bkp as select * from dept;
    Table created.
    SQL> alter table dept_bkp
      2  add constraint pk_deptno primary key(deptno);
    Table altered.
    SQL> select distinct deptno from emp_bkp;
        DEPTNO
            30
            20
            40
            10
    SQL> select deptno from dept_bkp;
        DEPTNO
            10
            20
            30
            40
            55
    SQL>  alter table emp_bkp
      2   add constraint fk_deptno_bkp foreign key(deptno)
      3    references dept_bkp(deptno);
    Table altered.
    SQL> alter table emp_bkp
      2  drop constraint fk_deptno_bkp;
    Table altered.
    SQL> insert into emp_bkp(empno,ename,deptno) values(142,'Fenny',90);
    1 row created.
    SQL> alter table emp_bkp
      2  add constraint fk_deptno_bkp foreign key(deptno)
      3   references dept_bkp(deptno);
    add constraint fk_deptno_bkp foreign key(deptno)
    ERROR at line 2:
    ORA-02298: cannot validate (SCOTT.FK_DEPTNO_BKP) - parent keys not found
    SQL> update emp_bkp
      2  set deptno=null
      3  where empno=142;
    1 row updated.
    SQL> alter table emp_bkp
      2  add constraint fk_deptno_bkp foreign key(deptno)
      3   references dept_bkp(deptno);
    Table altered.
    SQL> insert into dept_bkp (deptno,dname)values(90,'IT');
    1 row created.
    SQL> update emp_bkp
      2  set deptno=90
      3  where empno=142;
    1 row updated.Twinkle

  • Basic doubt about Primary Keys/Foreign Keys in Oracle Tables

    Hi,
    I have a doubt whether Primary Keys/Foreign Keys are allowed in Oracle or not. I have been informed that Oracle does not encourage having Primary Keys/Foreign keys in its database tables. Instead it urges users to have unique constraints on the requisite columns.
    However if I go to the ETRM and look for information about some of the Oracle Tables, I am informed that Primary Keys do exist. At the same time, I am being told that ETRM is not a reliable way of having correct information about table structure (at least the Primary Key information).
    It would be nice if any one of you provides me with some insight in this. Any pointers to a document would be welcome.
    Thanks

    FYI,
    There is seprate forum for Core Sql quieries
    PL/SQL
    Thanks

  • How to fetch column data using foreign key in adf table ?

    I have created a adf table using a view that has a group id and user id column. I want to display the user name ( from user table) and group name from group table. I had created view links to the corresponding tables from the user_group view ( whose iterator is used to render the table).
    It sort of works. I dragged the user name from the embedded user iterator in user_group iterator. It does find the correct user name but if I have more than one row, it displays the user name of the last row user in all rows !
    Is there a solution to this problem ?

    Well, I saw in the view query for the association view ( for Many-Many) that the SQL already had the joins with the two ( master) tables to the association table. So I went ahead and added the descriptive columns to the select clause. Then the selected columns showed up in the attribute list by themselves ( without my intervention). So far so good.
    Then I recreated the adf table attribute by dragging these newly selected attribute to the page. I still see that the value of the attribute is the same in all the rows - this time it is the value for the FIRST row. It doesn't correspond to the foreign key for that particular row.
    IS THIS A BUG ? Has anyone else ever done this ?

  • Determine if database view column is foreign key in underlying table

    Hi,
    I have posted this same question to the General Database Discussions and JDBC forums.
    I am using Oracle database 10g (10.1.0.4.0 - 64 bit production) standard edition on Red Hat Enterprise Linux AS release 3, JDK 1.4.2 and the latest Oracle JDBC (thin) driver.
    We have a java GUI application that is a front-end for our database. Some of the data entry screens display data from database views. If a column in the view is a foreign key in the underlying table, we want to display a combo-box with the valid values so that the user can choose a correct value.
    Is there some way to know whether a column in a view is a foreign key in the view's underlying table?
    Thanks,
    Avi.

    I take that back.. I did figure something out for ya.. After reading some elses post I wrote this code... but its time to go home... I believe this will show you all the constraints and constraint types for the underlying tables of all the views for a user. You can mess with it and get it to return only FK (constraint_type = 'R') and only for a single view if ya like... The all_dependencies data dictionary view is the key to this whole operation...
    select con.table_name, ucc.column_name, con.constraint_name, con.constraint_type
    from all_constraints con, all_cons_columns ucc
    where con.owner = user and
    con.owner = ucc.owner and
    con.table_name = ucc.table_name and
    con.table_name in
    (SELECT referenced_name
    FROM all_dependencies
    WHERE referenced_owner = USER
    AND referenced_type = 'TABLE'
    AND type = 'VIEW');

Maybe you are looking for

  • Blue Screen instead of sleep

    I experienced a strange behaviour of my iMac G5 (isight) the last few days: I set the iMac to first display the screensaver after 10 minutes, then to go to sleep after 45 minutes. Now, the saver shows up, no problem. But then, instead of going to sle

  • Error with EJBs in oc4j

    All of a sudden Im getting this error in the oc4j deployment: Error: com.framework.business.bd.BusinessDelegateException: Error calling ServiceClassification EJB: com.framework.business.servicelocator.ServiceNotAvailableException: Could not connect t

  • Error 404 in Chrome

    We recently upgraded our computers and systems.  We are a small non-profit and run our website in house.  I am able to do basic updates but am still a website novice (i.e. no codes).  We have the newset verison of Dreamweaver and recently our website

  • Crystal Subreport Oracle Session Problem

    dear all <br /><br />We are using Oracle 9i,Crystal Report 9 and Visual Basic 6 as FrontEnd <br />in which we are using RDC. We have limited sessions in Oracle and we <br />can't increase them. When we connect a simple report through set data <br />s

  • 4 Questions About Iphoto- Experts Please Reply

    Hi, im still new to iphoto 11 and mac in general, so im hoping I will find a few people on here who can bring me up to speed fast on a few things that Im having problems with. I imported some photos from my digital camera ( then wiped them off my cam