2016-04-12 5 views
0

auf bestehende Daten in Oracle gilt Ich habe folgende Tabelle mit DatenWie eine Standardeinschränkung auf vorhandenen Spalte hinzuzufügen, die

create table emp_status(
    empno number, 
    status varchar2(10) 
    ); 
insert into emp_status values(100,null); 
insert into emp_status values(200,null); 
alter table emp_status modify status default 'Active'; 

select * from emp_status; 
    empno status 
    100 null 
    200 null 

ich nicht die Standardwerte wie ‚Aktiv‘ für über Aufzeichnungen sehen.

Antwort

1

Sie fügen Werte ein, die explizit sagen, dass NULL in die Spalte status einzufügen ist; Auf diese Weise verwenden Sie nicht den Standardwert. Wenn Sie eine Spalte mit einem Standardwert brauchen und wollen NULL-Werte zu vermeiden, können Sie eine NOT NULL Einschränkung auf Ihre Spalte hinzufügen:

create table emp_status(
    empno number, 
    status varchar2(10) 
    ); 

alter table emp_status modify status default 'Active' NOT NULL; 

Jetzt können Sie Ihre Werte einfügen, ohne den Wert für status specicying:

SQL> insert into emp_status(empNo) values(100); 

1 row created. 

SQL> select status from emp_status; 

STATUS 
---------- 
Active 

und Sie können nicht einfügen von Zeilen mit NULLstatus

SQL> insert into emp_status(empNo, status) values(200, null); 
insert into emp_status(empNo, status) values(200, null) 
                * 
ERROR at line 1: 
ORA-01400: cannot insert NULL into ("ALEK"."EMP_STATUS"."STATUS") 
0

Wenn Sie Standardwert auf ‚Aktiv‘ Oracle ändert diesen Wert auf neue Zeilen weisen Sie einzufügen versuchen, wenn diese Spalte eine nicht angegeben, zB:

insert into emp_status (empno) values(100); 

Um die zuvor eingefügten Zeilen aktualisieren Sie Update verwenden können Aussage:

update emp_status set status = 'Active' where status is null; 
Verwandte Themen