18 - Valores por defecto (default) |
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla:
drop table libros;
Creamos la tabla estableciendo valores por defecto para los campos "autor" y "cantidad":
create table libros( titulo varchar2(40) not null, autor varchar2(30) default 'Desconocido' not null, editorial varchar2(20), precio number(5,2), cantidad number(3) default 0 );
Ingresamos un registro omitiendo los valores para el campo "autor" y "cantidad":
insert into libros (titulo,editorial,precio) values('Java en 10 minutos','Paidos',50.40);
Oracle ingresará el registro con el título, editorial y precio especificados, en "autor" colocará "Desconocido" y en cantidad "0", veámoslo:
select *from libros;
Si ingresamos un registro sin valor para el campo "precio", que admite valores nulos, se ingresará "null" en ese campo:
insert into libros (titulo,editorial) values('Aprenda PHP','Siglo XXI');
Veamos cómo se almacenó el registro ingresado anteriormente:
select *from libros;
Veamos si los campos de la tabla "libros" tiene definidos valores por defecto y cuáles son:
select column_name,nullable,data_default from user_tab_columns where TABLE_NAME = 'LIBROS';
Muestra la siguiente tabla:
COLUMN_NAME NULLABLE DATA_DEFAULT --------------------------------------------- TITULO N AUTOR N 'Desconocido' EDITORIAL Y PRECIO Y CANTIDAD Y 0
Muestra una fila por cada campo, en la columna "data_default" aparece el valor por defecto (si lo tiene), en la columna "nullable" aparece "N" si el campo no está definido "not null" y "Y" si permite valores nulos.
Podemos emplear "default" para dar el valor por defecto a algunos campos al ingresar un registro:
insert into libros (titulo,autor,editorial,precio,cantidad) values ('El gato con botas',default,default,default,default);
Veamos cómo se almacenó el registro:
select *from libros where titulo='El gato con botas';
Todos los campos, excepto "titulo" almacenaron su valor predeterminado.
Que un campo tenga valor por defecto no significa que no admita valores nulos, puede o no admitirlos. Podemos ingresar el valor "null" en el campo "cantidad":
insert into libros (titulo,autor,cantidad) values ('Alicia en el pais de las maravillas','Lewis Carroll',null);
Recuperamos el registro ingresado anteriormente:
select *from libros where autor='Lewis Carroll';
En "cantidad" se almacenó "null".