我有以下数据表
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
我没有看到默认值,例如' Active'以上记录。
答案 0 :(得分:1)
您正在插入值明确表示将NULL
插入列status
;这样,您没有使用默认值。
如果您需要具有默认值的列并希望避免使用空值,则可以向列中添加NOT NULL
约束:
create table emp_status(
empno number,
status varchar2(10)
);
alter table emp_status modify status default 'Active' NOT NULL;
现在,您可以插入您的值,而不必指定status
的值:
SQL> insert into emp_status(empNo) values(100);
1 row created.
SQL> select status from emp_status;
STATUS
----------
Active
并且您不能使用NULL
status
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")
答案 1 :(得分:0)
当您将默认值更改为'有效' 当未指定此列时,Oracle会将此值分配给您尝试插入的新行,例如:
insert into emp_status (empno) values(100);
要更新以前插入的行,您可以使用update语句:
update emp_status set status = 'Active' where status is null;