Problem in creating CHECK constraint

While creating a table, i want to apply a CHECK constraint, that pension_amount should be in accordance of pension_code, i am getting error mentioned below.
CREATE TABLE pension_amount_check
   pension_amount         NUMBER (4),
   pension_code   NUMBER (1),
   CONSTRAINT amount_chk CHECK
      (CASE
          WHEN pension_code = 1 THEN (pension_amount = 3000 OR pension_amount > 3000)
          WHEN pension_code = 2 THEN pension_amount = 1500
       end)
ORA-00907: missing right parenthesisHow i can resolve this.

CREATE TABLE pension_amount_check
   pension_amount         NUMBER (4),
   pension_code   NUMBER (1),
   CONSTRAINT amount_chk CHECK
         (pension_code = 1 AND pension_amount  >= 3000)
          OR
         (pension_code = 2 AND pension_amount  = 1500)
)http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_constraints.htm#ADFNS282

Similar Messages

  • Problem in Creating Check boxes as a column in a table using MVC

    I am trying to display a table format using the Model view controlers, with 1st column as a checkbox. if the user chooses some check boxes and submit the screen then i need to update the information in a custome table.
    I am having a problem in creating the check boxes, also pls tell me how to catch the line items checked by the user in the table...
    Sri

    HI Srinivas
       I am not getting what the exact problem is.....
    I am giving you a work around.....to me it does not seems to be an Ideal Solution..But Probably it will solve your problem....
    Changes To be Made in Page Layout...
    In Pagelayout     
    <htmlb:tableView id   = "tvX"                           width                 = "100%"                           visibleRowCount       = "8"                           fillUpEmptyRows       = "X"                         selectedRowIndexTable = "<%= selectedRowIndexTable %>"
    <b>selectedrowindex      = "<%= selectedrowindex %>"
    onrowselection        = "select"</b>
    selectionMode   = "MULTISELECT"                           table                 = "<%= sflight %>" />
    <b>selectedindexrow is an attribute of type INT4</b>
    In Do handle event.....instead of using the previous code use this one...
    if event->id = 'SUBMIT'.  
    DATA:      WA  TYPE  INT4.     
    LOOP AT SELECTEDROWINDEXTABLE INTO WA.
    *Here you can read your table of TABLEVIEW with index *equal to WA into a workarea and then use that workarea *to update the customer table      ENDLOOP.   
    elseif event->id = 'tvX'.
    tv ?= CL_HTMLB_MANAGER=>GET_DATA( request = request                                      name    = 'tableView'                                      id      = 'tvX' ).  
    IF tv IS NOT INITIAL.    
    table_event = tv->data.   
    selectedRowIndex = table_event->SELECTEDROWINDEX.
    append selectedrowindex into SELECTEDROWINDEXTABLE.
    endif.
    ENDIF.
    Meanwhile..Let me check why that code does not work.....
    Hope it solve your problem....
    Cheers:)
    Mithlesh

  • Check constraint in Data Modeler

    Hi
    I have a problem with merging two logical models.
    in first I have a table with column ranking number(2),
    in second model I modify this column:
    ranking varchar2(10) default 'A'
    and create check constraint ranking_ch:
    ranking..... check ('A', 'B',.....)
    Then I compare models I have only
    alter table....
    modify ranking varchar2(10) default 'A'
    but I have not constraint ranking_ch.
    Why?

    Thanks.
    Another topic:
    I have a problem with reverse engineering with Data Modeler:
    1.I have a simple script (*.sql):
    create table jw
    (a number(2),
    b varchar2(30)
    2.I use function file/import/ddl file - on Relational diagram is OK:
    I have table with two columns.
    3. I use function Engineer to Logical Model and I see entity with:
    a numeric_0_2_0
    b varchar_0_0_30
    Modeler creates two new domains.
    Why?

  • Peculiar problem in oracle 10g  on AIX 5.3.0 With Check constraints

    Hi Every One,
    I am facing peculiar problem in oracle 10.2.0.1.0,AIX 5.3.0. I created table with check constraints like this
    create table test1 (name nvarchar2(1),check (name in('Y','N')));
    SQL> create table test1 (name nvarchar2(1),check (name in('Y','N')));
    Table created.
    SQL> insert into test1 values ('Y');
    1 row created.
    SQL> COMMIT;
    SQL> select from test1 where name = 'Y';* Why this statement is n't working
    no rows selected
    SQL> select * from test1;
    N
    Y
    ANOTHER INTERSTING ONE IS
    SQL> select * from test1 where name in('Y'); Why this statement is n't working
    no rows selected
    SQL> select * from test1 where name in('Y','Y'); it's working
    N
    Y
    SQL> select * from test1 where name in('','Y'); it's working
    N
    Y
    SQL> select * from test1 where name in('7','Y'); it's working
    N
    Y
    Like
    SQL> select * from test1 where name like 'Y'; it's not working
    no rows selected
    I created a table without check constraints
    SQL> create table test2 (name nvarchar2(1));
    Table created.
    SQL> insert into test2 values ('Y');
    1 row created.
    SQL> select * from test2;
    N
    Y
    SQL> select * from test2 where name ='Y'; it's working
    N
    Y
    SQL> select * from test2 where name like 'Y'; it's working
    N
    Y
    Database Details
    NLS_LANGUAGE AMERICAN
    NLS_TERRITORY AMERICA
    NLS_CURRENCY $
    NLS_ISO_CURRENCY AMERICA
    NLS_NUMERIC_CHARACTERS .,
    NLS_CHARACTERSET WE8MSWIN1252
    NLS_CALENDAR GREGORIAN
    NLS_DATE_FORMAT DD-MON-RR
    NLS_DATE_LANGUAGE AMERICAN
    NLS_SORT BINARY
    NLS_TIME_FORMAT HH.MI.SSXFF AM
    PARAMETER VALUE
    NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
    NLS_DUAL_CURRENCY $
    NLS_COMP BINARY
    NLS_LENGTH_SEMANTICS BYTE
    NLS_NCHAR_CONV_EXCP FALSE
    NLS_NCHAR_CHARACTERSET AL16UTF16
    NLS_RDBMS_VERSION 10.2.0.1.0
    Why it's happening. Whehter check constraint is valid or not in Equallity operator and like and in .
    Whereever we using single character column with check constraint,it's working with Equality operator and like and in.
    IT'S WORKING FINE WITHOUT CHECK CONSTRAINTS.WE HAVE TWO AIX MACHINES WITH ORACLE10G.THE SAME PROBLEM OCCURING IN TWO MACHINES
    PLEASE HELP ME .
    THANK YOU,
    WITH REGARDS,
    N.VINODH

    h
    Edited by: user3266490 on Dec 3, 2008 2:30 AM

  • Is it possible to create a dynamic(with a select) check constraint?

    create table a (col_to_be_coded_fora number);
    create table b (col_to_be_coded_forb number);
    create table c (col_name varchar2(20), col_code number, col_desc varchar2(20));
    insert into c values ('col_to_be_coded_fora', 1, 'active');
    insert into c values ('col_to_be_coded_fora', 2, 'de-active');
    insert into c values ('col_to_be_coded_fora', 3, 'pending');
    insert into c values ('col_to_be_coded_forb', 10, 'school');
    insert into c values ('col_to_be_coded_forb', 20, 'hospital');
    insert into a values ( 1); -- meaning 'active' for table a, column col_to_be_coded_fora, can go in
    insert into a values (10); -- meaning nothing for table a, column col_to_be_coded_fora, must give error
    insert into b values ( 1); -- meaning nothing for table b, column col_to_be_coded_forb, must give error
    insert into b values (10); -- meaning 'school' for table b, column col_to_be_coded_fora, can go in
    I know i can handle this problem with dividing table c into to tables and creating foreign key relationship.
    in this demo case i have only a and b, 2 tables but i want to encode thousands of tables with a table like c.
    &#304;s it possible to create a dynamic check constraint on a table which selects c table for the inputs that have permision?
    Or do i have to use after insert, update triggers on table a and b to ensure this functionality?
    Is there a smarter implementation for this need, may be a design change?
    Thank you,
    Kind regards.
    Tonguç

    Hi Tonguç,
    A small design change makes it possible to do this with simple foreign key constraints.
    I would do something like:
    ual303@ORKDEV01> CREATE TABLE c (
      2    col_name VARCHAR2(20),
      3     col_code NUMBER,
      4     col_desc VARCHAR2(20),
      5     PRIMARY KEY (col_name, col_code)
      6  );
    Tabel is aangemaakt.
    ual303@ORKDEV01> CREATE TABLE a (
      2    col_to_be_coded_fora NUMBER PRIMARY KEY,
      3     col_name VARCHAR2(20) DEFAULT 'col_to_be_coded_fora' CHECK (col_name = 'col_to_be_coded_fora'),
      4     FOREIGN KEY (col_name, col_to_be_coded_fora) REFERENCES c
      5  );
    Tabel is aangemaakt.
    ual303@ORKDEV01> CREATE TABLE b (
      2    col_to_be_coded_forb NUMBER PRIMARY KEY,
      3     col_name VARCHAR2(20) DEFAULT 'col_to_be_coded_forb' CHECK (col_name = 'col_to_be_coded_forb'),
      4     FOREIGN KEY (col_name, col_to_be_coded_forb) REFERENCES c
      5  );
    Tabel is aangemaakt.
    ual303@ORKDEV01> insert into c values ('col_to_be_coded_fora', 1, 'active');
    1 rij is aangemaakt.
    ual303@ORKDEV01> insert into c values ('col_to_be_coded_fora', 2, 'de-active');
    1 rij is aangemaakt.
    ual303@ORKDEV01> insert into c values ('col_to_be_coded_fora', 3, 'pending');
    1 rij is aangemaakt.
    ual303@ORKDEV01> insert into c values ('col_to_be_coded_forb', 10, 'school');
    1 rij is aangemaakt.
    ual303@ORKDEV01> insert into c values ('col_to_be_coded_forb', 20, 'hospital');
    1 rij is aangemaakt.
    ual303@ORKDEV01> -- meaning 'active' for table a, column col_to_be_coded_fora, can go in
    ual303@ORKDEV01> insert into a(col_to_be_coded_fora) values ( 1);
    1 rij is aangemaakt.
    ual303@ORKDEV01> -- meaning nothing for table a, column col_to_be_coded_fora, must give error
    ual303@ORKDEV01> insert into a(col_to_be_coded_fora) values (10);
    insert into a(col_to_be_coded_fora) values (10)
    FOUT in regel 1:
    .ORA-02291: integrity constraint (UAL303.SYS_C0033537) violated - parent key not found
    ual303@ORKDEV01> -- meaning nothing for table b, column col_to_be_coded_forb, must give error
    ual303@ORKDEV01> insert into b(col_to_be_coded_forb) values ( 1);
    insert into b(col_to_be_coded_forb) values ( 1)
    FOUT in regel 1:
    .ORA-02291: integrity constraint (UAL303.SYS_C0033540) violated - parent key not found
    ual303@ORKDEV01> -- meaning 'school' for table b, column col_to_be_coded_fora, can go in
    ual303@ORKDEV01> insert into b(col_to_be_coded_forb) values (10);
    1 rij is aangemaakt.
    ual303@ORKDEV01>Cheers,
    Colin

  • 10g R2 NVARCHAR2 check constraint problems

    Hi, Thanks for taking a look...
    I've just installed 10g R2 on Solaris 10 and run into a small problem with NVARCHAR2s.
    I have a table with a check constraint to make sure the column is a valid value on an nvarchar2 column. Querying the table for a specific value results in no data found, however the data appears to be intact.
    The database NLS_CHARACTERSET is AL32UTF8 and NLS_NCHAR_CHARACTERSET is AL16UTF16.
    I think the following script results can show the problem better than I can explain it.
    Any suggestions would be appreciated. Thanks.
    Mike
    SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 17 13:51:40 2006
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
    With the Partitioning and Data Mining options
    SQL> @problem_script.sql
    SQL> create table foo (
    2 bar nvarchar2(10) constraint ck_bar check (bar in ('abc','def'))
    3 );
    Table created.
    SQL> insert into foo values ('abc');
    1 row created.
    SQL> commit;
    Commit complete.
    SQL>
    SQL> REM Strange. This worked in every version prior to 10g R2.
    SQL> REM Why doesn't it work now?
    SQL>
    SQL> select * from foo where bar = 'abc';
    no rows selected
    SQL>
    SQL> REM Even more strange is why this doesn't work:
    SQL>
    SQL> select * from foo where bar = N'abc';
    no rows selected
    SQL>
    SQL> REM Stranger still are these two queries:
    SQL>
    SQL> select bar, decode(bar, 'abc', 'It matches', 'No it doesnt')
    2 from foo;
    BAR DECODE(BAR,'A
    abc It matches
    SQL>
    SQL> REM This is still strange, but not unexpected given the prior query
    SQL>
    SQL> select bar, decode(bar, 'abc', 'It matches', 'No it doesnt')
    2 from foo
    3 where bar = 'abc';
    no rows selected
    SQL>
    SQL> REM Strangest of all is why this DOES work:
    SQL>
    SQL> alter table foo disable constraint ck_bar;
    Table altered.
    SQL> select * from foo where bar = 'abc';
    BAR
    abc
    SQL>
    SQL>
    SQL> REM Regular varchars are unchanged...
    SQL>
    SQL> create table bar (
    2 foo varchar2(10) constraint ck_foo check (foo in ('abc','def'))
    3 );
    Table created.
    SQL> insert into bar values ('abc');
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select * from bar where foo = 'abc';
    FOO
    abc

    Nope.
    SQL> select * from foo where bar = TO_NCHAR('abc');
    no rows selected
    Of all the things I've tried (and I think I've tried just about everything), only the TO_CHAR(bar) and disabling the check constraint work. The fact that DECODE(bar, 'abc', 'true', 'false') in the select list is also confusing since it's converted there correctly, but not in the WHERE clause. And why does it work as epxected when the constraint is disabled?
    My thoughts are that it can't be an Oracle bug, otherwise I'm sure I wouldn't be the first to find it. I've built the instance using the same configuration script I used for the 10g R1 database that works, so the configuration parametes are the same.
    More things that don't make sense:
    SQL> select dump(bar), dump('abc') from foo;
    DUMP(BAR)
    DUMP('ABC')
    Typ=1 Len=6: 0,97,0,98,0,99
    Typ=96 Len=3: 97,98,99
    SQL> select dump(bar), dump(to_nchar('abc')) from foo;
    DUMP(BAR)
    DUMP(TO_NCHAR('ABC'))
    Typ=1 Len=6: 0,97,0,98,0,99
    Typ=1 Len=6: 0,97,0,98,0,99
    Thanks for your help though...
    Mike

  • Problem with check constraint in mysql

    I am using mysql v8.14 and I have a problem on CHECK which is given below. I want to insert just 'friends' and 'all' on privacy attribute
    but mysql inserts everything.
    Can anyone help me, please? Thanks
    CREATE TABLE `customer`
    `cid` NUMERIC(6),
    `cname` VARCHAR(25),
    `password` VARCHAR(6),
    `email` VARCHAR(25),
    `phone` NUMERIC(12),
    `privacy` VARCHAR(10),
    PRIMARY KEY (`cid`),
    CHECK (`privacy`= `friends` OR `privacy`= `all`)
    );

    I am not familiar with MySQL syntax, but I would offer this observation:
    In your definition of the check constraint:
    CHECK (`privacy`= `friends` OR `privacy`= `all`)you are using the same delimiters (`) around both your column names and your literals. Is that correct?
    i.e. in Oracle I would use
    CHECK(privacy = 'friends' OR privacy = 'all')because privacy is not a literal, it is a column name.
    Is your syntax correct?

  • Problem in create constraints

    hi..
    i am attempting to create a primary constraint on one table which containts
    more than 50 lacs records.when i tried to add constraints with enable novalidate,but its failed to create a constraints on the table.
    we have to preserve the data which already presented in the table. there is no way to delete and change the records which is presented now.
    please in what way to over come this problem.
    by
    ravikumar

    BANNER
    Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
    PL/SQL Release 10.1.0.2.0 - Production
    CORE 10.1.0.2.0 Production
    TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
    NLSRTL Version 10.1.0.2.0 - Production
    desc hp_tran_dtls
    Name Null? Type
    TC VARCHAR2(3)
    DOC_NO VARCHAR2(15)
    DOC_DT DATE
    AGR_NO VARCHAR2(10)
    TRAN_DTLS_SRNO NUMBER(6)
    GL_CODE NOT NULL VARCHAR2(5)
    SUB_CODE VARCHAR2(15)
    REF_NO VARCHAR2(15)
    REF_DT DATE
    CHQ_NO VARCHAR2(10)
    CHQ_DT DATE
    ACT VARCHAR2(5)
    DIV VARCHAR2(5)
    EMP VARCHAR2(5)
    PARTICULARS VARCHAR2(60)
    DBCR CHAR(1)
    AMT NOT NULL NUMBER(16,2)
    TRN_TYPE CHAR(1)
    LOCK_REC_FLG CHAR(1)
    TMP_RECNO VARCHAR2(10)
    VALUE_DT DATE
    CHQ_BANK VARCHAR2(10)
    BRANCH NOT NULL VARCHAR2(5)
    SECTOR VARCHAR2(5)
    PRODUCT VARCHAR2(5)
    PORTFOLIO VARCHAR2(5)
    FUTURE1 VARCHAR2(5)
    FUTURE2 VARCHAR2(5)
    BRANCHNM VARCHAR2(30)
    REASON1 VARCHAR2(5)
    TMP_REC_DT DATE
    ADDL_AMT NUMBER(14,2)
    TRANS_NAT VARCHAR2(5)
    REC_STATUS CHAR(1)
    BUSI_AREA VARCHAR2(5)
    FA_TRANSFER CHAR(1)
    CHQ_HNDL VARCHAR2(60)
    CHQ_HNDL_TAG CHAR(1)
    INS_CHECK VARCHAR2(2)
    FA_POST_IND VARCHAR2(3)
    FA_POST_DOC_NO VARCHAR2(10)
    i have to create primary(tc,doc_no,TRAN_DTLS_SRNO)

  • How to create this check constraint

    create table emplt
    ( emplt_pk number,
    indvl_pk number,
    start_dt date,
    end_dt date,
    lct_fl char(1),
    sup_fl char(1),
    br_pk number,
    nro_pk number,
    default_fl char(1) default 'N' );
    INSERT INTO emplt
    values(
    1001, 101, to_date('01-01-2005', 'MM-DD-YYYY' ), NULL, 'Y','N',123,NULL,NULL );
    INSERT INTO emplt
    values(
    1002, 101, to_date('02-01-2005', 'MM-DD-YYYY' ), NULL, 'Y','N',NULL,0001,NULL );
    INSERT INTO emplt
    values(
    1003, 102, to_date('02-01-2005', 'MM-DD-YYYY' ), NULL, 'Y','N',NULL,0001,NULL );
    Is it possible to create a check constraint on this table that enforces that for a given indvl_pk, br_pk and nro_pk
    there is only one row with dflt_fl = 'Y'?
    Thanks in advance!

    Say,
    SQL> create unique index empli_ui on emplt(case default_fl when 'Y' then indvl_pk end,
      2  case default_fl when 'Y' then br_pk end,
      3  case default_fl when 'Y' then nro_pk end
      4  )
      5  /
    &nbsp
    Index created.
    &nbsp
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(1,2,3,'J');
    &nbsp
    1 row created.
    &nbsp
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(1,2,3,'J');
    &nbsp
    1 row created.
    &nbsp
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(3,2,1,'A');
    &nbsp
    1 row created.
    &nbsp
    SQL>
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(3,2,1,'A');
    &nbsp
    1 row created.
    &nbsp
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(3,2,1,'Y');
    &nbsp
    1 row created.
    &nbsp
    SQL>
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(3,2,1,'Y');
    insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
    ERROR at line 1:
    ORA-00001: unique constraint (SCOTT.EMPLI_UI) violated
    &nbsp
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(1,2,3,'Y');
    &nbsp
    1 row created.
    &nbsp
    SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
      2  values(1,2,3,'Y');
    insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
    ERROR at line 1:
    ORA-00001: unique constraint (SCOTT.EMPLI_UI) violatedRgds.

  • Creating a check constraint with a join

    Hi,
    is it possible to create a check constraint under the data models using a join on lookup table?
    I would like to filter out tuples in the target table involving conditions from an another table.
    Regards

    Numbers has checkable boxes but they don't work once exported to PDF.
    And there is iBooks Author as well which can create ePubs.
    If it is just for yourself on your Mac I highly recommend Qu-s.
    Peter

  • Primary key and relevant not null check constraints....

    Hi ,
    There are some constraints of primary key type and not null check constraints on columns which constitute each primary key....
    Should I/Do I have to drop them....????
    Do they burden the db at the time of data validation....????
    Thanks...
    Sim

    Hi,
    >>There are some constraints of primary key type and not null check constraints on columns which constitute each primary key..
    In fact, a column that constitutes a primary key, by default cannot accept NULL values. In this case, defines a PK column as NOT NULL would not be necessary.
    LEGATTI@ORACLE10> create table x (id number constraint pk_x primary key);
    Table created.
    LEGATTI@ORACLE10> desc x
    Name                  Null?    Type
    ID                    NOT NULL NUMBER
    LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='X';
    CONSTRAINT_NAME                C TABLE_NAME      SEARCH_CONDITION                
    PK_X                           P X
    LEGATTI@ORACLE10> create table y (id number not null constraint pk_y primary key);
    Table created.
    LEGATTI@ORACLE10> desc y
    Name                  Null?    Type
    ID                   NOT NULL NUMBER
    LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='Y';
    CONSTRAINT_NAME                C TABLE_NAME      SEARCH_CONDITION
    SYS_C006327381 C Y "ID" IS NOT NULL 
    PK_Y                           P Y
    LEGATTI@ORACLE10> alter table y drop constraint SYS_C006327381;
    Table altered.
    LEGATTI@ORACLE10> desc y
    Name                                      Null?    Type
    ID                                        NOT NULL NUMBER
    LEGATTI@ORACLE10> insert into y values (NULL);
    insert into y values (NULL)
    ERROR at line 1:
    ORA-01400: cannot insert NULL into ("LEGATTI"."Y"."ID")
    LEGATTI@ORACLE10> insert into y values (1);
    1 row created.
    LEGATTI@ORACLE10> insert into y values (1);
    insert into y values (1)
    ERROR at line 1:
    ORA-00001: unique constraint (LEGATTI.PK_Y) violated
    >>Should I/Do I have to drop them....????
    I don't see any problem, otherwise, drop the NOT NULL constraint is the same with alter the column table like below:
    LEGATTI@ORACLE10> create table z (id number not null constraint pk_z primary key);
    Table created.
    LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='Z';
    CONSTRAINT_NAME                C TABLE_NAME                     SEARCH_CONDITION
    SYS_C006328420 C Z "ID" IS NOT NULL
    PK_Z                           P Z
    LEGATTI@ORACLE10> desc z
    Name                                      Null?    Type
    ID                                        NOT NULL NUMBER
    LEGATTI@ORACLE10> alter table z modify id NULL;
    Table altered.
    LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='Z';
    CONSTRAINT_NAME                C TABLE_NAME                     SEARCH_CONDITION
    PK_Z                           P Z
    LEGATTI@ORACLE10> desc z
    Name                                      Null?    Type
    ID                                        NOT NULL NUMBERCheers
    Legatti

  • Having a problem with creating/using a primary key on a view

    I have a problem with a primary key on a view
    I created the view and primary key as follows:
    CREATE OR REPLACE FORCE VIEW "MDD"."ROCK_LU" ("DESCRIPTION",
         UNIQUE ("DESCRIPTION") RELY DISABLE,
         CONSTRAINT "ROCK_LU_PK" PRIMARY KEY ("DESCRIPTION") RELY DISABLE) AS
    SELECT DESCRIPTION
    FROM MRMC_LU
    WHERE ROCK = 'T';
    The view with the primary key appears to have been created as there were no error messages. (The above was from the sql tab in sql developer.)
    When I try to create the foreign key on my mdd_hr table - I get an error
    /* hr_name - foreign key */
    ALTER TABLE mdd_hr add CONSTRAINT hr_name_fk FOREIGN KEY (hr_name) REFERENCES rock_lu(description);
    Error report:
    SQL Error: ORA-02270: no matching unique or primary key for this column-list.
    When I lookup the index in sql developer, rock_lu_pk is not there.
    All my other foreign keys work - but I don't understand what I am doing wrong with this one. Please help.
    glenn
    Background - as to why I want to use a view as a lookup table.
    The MRMC_LU table that the view is created from is structured like:
    DESCRIPTION - MINERAL - ROCK - MODIFIER - COMMODITY
    ANHYDRITE - T - T - T
    APLITE - T - - T
    GRAPHITE - T - - - T
    GREYWACKE - - T
    DESCRIPTION is a list of all names of minerals, rocks, modifiers and commodities. T is entered in each valid field. Often a description name is used for both a mineral and a rock or a mineral and a commodity or any other combination. Because this database is just starting up, it was more efficient to create one table that could be updated (and thereby automatically update the MINERAL_LU, ROCK_LU, MODIFIER_LY, COMMODITY_LU views) rather than create and maintain four separate but similar tables. A primary key cannot be generated for the MRMC_LU table as there are nulls in each column
    except DESCRIPTION.
    Perhaps there is a smarter way to do this?

    http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_85a.htm#2065512
    You can specify constraints on views and object views. You define the constraint at the view level using the out_of_line_constraint clause. You define the constraint as part of column or attribute specification using the inline_constraint clause after the appropriate alias.
    Oracle does not enforce view constraints. However, operations on views are subject to the integrity constraints defined on the underlying base tables. This means that you can enforce constraints on views through constraints on base tables.
    Restrictions on View Constraints
    View constraints are a subset of table constraints and are subject to the following restrictions:
    You can specify only unique, primary key, and foreign key constraints on views. However, you can define the view using the WITH CHECK OPTION clause, which is equivalent to specifying a check constraint for the view.
    Because view constraints are not enforced directly, you cannot specify INITIALLY DEFERRED or DEFERRABLE.
    View constraints are supported only in DISABLE NOVALIDATE mode. You must specify the keywords DISABLE NOVALIDATE when you declare the view constraint, and you cannot specify any other mode.
    You cannot specify the using_index_clause, the exceptions_clause clause, or the ON DELETE clause of the references_clause.
    You cannot define view constraints on attributes of an object column.
    Rgds.

  • Problem when creating Database (Database, OS and hardware Configuraiton included)

    Problem when creating Database:
    Below are the problems, which I faced during creation of database. I have mentioned both the problem separately. Plus the log file maintained by Oracle during installation. It might help in diagnosing the error. Plus a little conclusion with I turned up to.
    There are two problems, when creating database with Oracle Database Assistant. One when creating pre tuned database from CD. And second when creating customized database giving options your self.
    Problem # 1:
    When creating pre tuned database from CD. The process of creating Database is 90 % complete and is at step # 3 Initializing Database. It gives error ORA-03113: end-of-file on communication channel.
    I searched following oracle help for this problem.
    ORA-03113: end-of-file on communication channel
    Cause: An unexpected end-of-file was processed on the communication channel. The problem could not be handled by the Net8, two-task software. This message could occur if the shadow two-task process associated with a Net8 connect has terminated abnormally, or if there is a physical failure of the interprocess communication vehicle, that is, the network or server machine went down.
    Action: If this message occurs during a connection attempt, check the setup files for the appropriate Net8 driver and confirm Net8 software is correctly installed on the server. If the message occurs after a connection is well established, and the error is not due to a physical failure, check if a trace file was generated on the server at failure time. Existence of a trace file may suggest an Oracle internal error that requires the assistance of customer support.
    Conclusion:
    What I conceive from this problem and the help available is that, I have to install NET8 again. But I am not sure about the solution, please tell me whether I am rite or not.
    Problem # 2:
    When creating database with custom option. The process of creating Database is 2 % complete and is at step # 2 Creating Database Files. It gives error ORA-12571: TNS:packet writer failure.
    I searched following oracle help for this problem.
    ORA-12571: TNS:packet writer failure
    Cause: An error occurred during a data send.
    Action: Not normally visible to the user. For further details, turn on tracing and re-execute the operation. If error persists, contact Worldwide Customer Support.
    Conclusion:
    What I conceive from this problem and the help available is that, I have to install NET8 again. But I am not sure about the solution, please tell me whether I am rite or not.
    Log File Showing Error :
    Result code for launching of configuration tool is 0
    Launched configuration tool Oracle Database Configuration Assistant
    Command which is being spawned is C:\Program Files\Oracle\jre\1.1.7\bin/jrew.exe -Duser.dir=d:\oracle\ora81\assistants\dbca\jlib -classpath ";C:\Program Files\Oracle\jre\1.1.7\lib\rt.jar;C:\Program Files\Oracle\jre\1.1.7\lib\i18n.jar;d:\oracle\ora81\jlib\ewt-3_3_6.jar;d:\oracle\ora81\jlib\share-1_0_8.jar;d:\oracle\ora81\jlib\swingall-1_1_1.jar;d:\oracle\ora81\assistants\dbca\jlib\dbassist.jar;d:\oracle\ora81\assistants\jlib\jnls.jar;d:\oracle\ora81\assistants\jlib\acc.jar;d:\oracle\ora81\jlib\help-3_1_8.jar;d:\oracle\ora81\jlib\ice-4_06_6.jar;d:\oracle\ora81\jlib\netcfg.jar;" DBCreateWizard -progress_only -responseFile NO_VALUE -createtype seed -numusers NO_VALUE -apptype NO_VALUE -cartridges NO_VALUE -options NO_VALUE -demos NO_VALUE -seedloc d:\oracle\ora81\starterdb -sid ora8i -orabase d:\oracle -clususer NO_VALUE -cluspswd Protected value, not to be logged -nodeinfo NO_VALUE -gdbName ora8i
    Invalid Exit Code. The following result code will be used for configuration tool: 1
    Configuration tool Oracle Database Configuration Assistant failed
    The datafiles will be copied from the CD to d:\oracle\oradata\ora8i. The Oracle Database Configuration Assistant will begin creating the database.
    An Oracle database will be created for you. The database name will be ora8i. The system identifier for the database will be ora8i. The password for the INTERNAL account will be ******, the SYS account will be change_on_install and the SYSTEM account will be manager.
    Log File of Installation:
    The above code is a part of the log file, which is generated by Oracle installer at C:\Program Files\Oracle\Inventory\Log\..
    I just pasted the part of code, highlighted is the code showing error with Oracle Database Configuration Assistant.
    Software & Hardware Configuration are as follow:
    Software:
    Database
    Oracle 8.1.7.0.0 (Oracle8i)
    Operating System
    Microsoft Windows 2000
    5.00.2195
    Service Pack 2
    Hardware:
    x86 Family 6 Model 8 stepping
    10
    AT/AT COMPITABLE
    260,400 KB RAM

    Dont't worry about that. Before you
    create a table(or view), it is wise to
    drop the table(or view) with the same name.
    If the name doesn't exist, of course there
    is an error message. See the following script:
    -------------------begin-----------
    drop table students cascade constraints;
    create table students (
    sid varchar2(5),
    fname varchar2(20),
    lname varchar2(20) not null,
    minit char,
    primary key (sid));
    --------------end-----------------
    Good day!
    null

  • Check constraint from domain missing after generation

    Hi,
    I've got the following problem with designer 10g. When I create a column and specify a specific domain, then generate the scripts for 10g (or 8i,9,...) the check constraints that is specified in the domain goes missing. The strange part is that we have about 50 domains and 49 of them work perfect but one of them just doesn't want to be generated. I've been comparing the domain to the others but I don't see any major differences that would cause the problem. Anyone know what could cause the problem or where I should (I think it is somewhere in the design & generate part) ?
    Help would be greatly appreciated.
    Grtz
    Message was edited by:
    Yves C

    Kent,
    in the DM v3.3.0.747 I have defined domains using value lists that lets you specify data values for the domain instead of define a check constraint, example Domain Name: "YesNo" and Value List -> "Y", "N".
    After adding a new column and set with the domain created, I force to apply the standard names to table with the button "Naming Rules", and the constraint created is correctly named . Notice that I need to force to apply the standard names because by default these constraints are created without name.
    Now I checked create a domain with check constraint definition for 11g (instead of using a list of values) and the behavior was the same.
    I recently upgraded to version 4.0EA2 and it works in the same way for both, so see if forcing to apply the "naming rules" solves your issue.
    Regards.
    Ariel.

  • Oracle check constraint bug ?

    Hi,
    This is an 'interesting' bug:
    create table mytable (
    id number,
    status number,
    constraint mytable_pk primary key (id)
    insert into mytable (id, status) values (1, 0);
    insert into mytable (id, status) values (2, -1);
    On XE (10.2.0.1) and 10.2.0.4:
    Following command gives the expected ORA-02293 error (using string values instead of numbers): alter table mytable add constraint mytable_status_chk check (status in ('0', '1'));
    BUT no error with the following command: alter table mytable add constraint mytable_status_chk check (status in ('-1', '0', '1'));
    On XE:
    The query select * from mytable where status=0 returns no records until the constraint is dropped again !
    Best regards,
    Serge
    Edited by: sergeko on Nov 19, 2010 11:19 AM
    Edited by: sergeko on Nov 19, 2010 11:21 AM

    I don't have access to any 10.x or XE currently and cannot reproduce on EE 9.2.0.9 or 11.1.0.6.
    It's possible that you're running into an optimizer issue with the constraint.
    This might be visible if you run an explain plan on the statement, get the execution plan via dbms_xplan.display and check the predicates section both with and without the constraint.
    I take it that you don't get the problem if you use a check constraint with numbers not strings.
    I wonder also whether it makes a difference if you declare status as not null.
    Edited by: DomBrooks on Nov 19, 2010 10:44 AM

Maybe you are looking for