It's possible that the constraint was added after the data was already in the table with novalidate. Check the value for VALIDATED in the source database on DBA_CONSTRAINTS. tkiernan@NPSALPHA> create table t1 ( 2 c1 varchar2(5)) 3 ; Table created. Elapsed: 00:00:00.05 tkiernan@NPSALPHA> insert into t1 values (null); 1 row created. Elapsed: 00:00:00.01 tkiernan@NPSALPHA> insert into t1 values values ('ABC'); insert into t1 values values ('ABC') * ERROR at line 1: ORA-00936: missing expression Elapsed: 00:00:00.00 tkiernan@NPSALPHA> insert into t1 values ('ABC'); 1 row created. Elapsed: 00:00:00.00 tkiernan@NPSALPHA> insert into t1 values ('DEF'); 1 row created. Elapsed: 00:00:00.00 tkiernan@NPSALPHA> insert into t1 values ('GHI'); 1 row created. Elapsed: 00:00:00.00 tkiernan@NPSALPHA> select * from t1; C1 ----- ABC DEF GHI Elapsed: 00:00:00.01 alter table t1 modify c1 not null --****Can't apply the constraint with null data **** * ERROR at line 1: ORA-02296: cannot enable (TKIERNAN.) - null values found Elapsed: 00:00:00.02 tkiernan@NPSALPHA> alter table t1 modify c1 not null novalidate; --****Unless the constraint doesn't check the existing data **** Table altered. Elapsed: 00:00:00.08 tkiernan@NPSALPHA> select * from t1; --*** There's still a NULL value. I can't insert new NULL values or update existing records to NULL, but the existing records may stay as they are. C1 ----- ABC DEF GHI Elapsed: 00:00:00.02 tkiernan@NPSALPHA> select owner, constraint_type, status, validated from dba_constraints where owner='TKIERNAN' and table_name = 'T1'; OWNER C STATUS VALIDATED ------------------------------ - -------- ------------- TKIERNAN C ENABLED NOT VALIDATED Elapsed: 00:00:00.78 tkiernan@NPSALPHA> HTH, T. J. -----Original Message----- From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On Behalf Of Ingrid Voigt Sent: Tuesday, April 15, 2014 10:54 AM To: oracle-l@xxxxxxxxxxxxx Subject: Null data in not null column Hi, one of our customers' databases has a table with a not null column containing empty data. Do you know how this can be set up? I need to copy the table (via exp/imp) and hit either ORA-01400 (when defining not null before insert) or ORA-02296 (when I insert first and later modify the column). More details: Windows 2008 R2 Oracle 11.2.0.3 + Patch 27 (January 2014) Table definition (more columns left out): CREATE TABLE USR_USER ( OID NUMBER(15) NOT NULL, ANZEIGE_NAME VARCHAR2(40 BYTE) DEFAULT '' NOT NULL, ) TABLESPACE USERS; And the data: > select oid, anzeige_name, '.'||anzeige_name||'.' from usr_user; OID ANZEIGE_NAME LENGTH(ANZEIGE_NAME) ---------- ---------------------------------------- -------------------- 223 224 (more rows left out) These are not strings consisting of spaces, but really empty ones, i.e. nulls. Insert into the table without specifying anzeige_name also hits ORA-01400, the condition is active. The corresponding check constraint is enabled and validated. I'd appreciate help in reproducing this. Thank you. Ingrid Voigt -- //www.freelists.org/webpage/oracle-l