CODIGOHTML=<font color="00000" size="15">Crea una tabla en base de datos.
La sintaxis bsica es:
CREATE TABLE nombre_tabla(
COLUMNA TIPO [NOT NULL],
COLUMNA TIPO [NOT NULL],
. . .
{CONSTRAINT nombre_clave_primaria PRIMARY KEY (columnas_clave)}
{CONSTRAINT nombre_clave_fornea
FOREIGN KEY(columnas_clave) REFERENCES tabla_detalle( columnas_clave )
{ON DELETE CASCADE} } )
{TABLESPACE tablespace_de_creacin}
{STORAGE( INITIAL XX{K|M} NEXT XX{K|M} )}
La creacin de la tabla FACTURA definida en la pg. 10 sera la siguiente:
CREATE TABLE FACTURA(
REFERENCIA VARCHAR2(10) NOT NULL,
DESCRIPCION VARCHAR2(50),
C_PAIS NUMBER(3),
C_CLIENTE NUMBER(5),
IMPORTE NUMBER(12),
CONSTRAINT PK_FACTURA PRIMARY KEY( REFERENCIA )
CONSTRAINT FK_CLIENTE(C_PAIS,C_CLIENTE) REFERENCES CLIENTE( C_PAIS, C_CLIENTE)
ON DELETE CASCADE
TABLESPACE tab_facturas
STORAGE( INITIAL 1M NEXT 500K );
Los campos que van a formar parte de la clave se tienen que definir como NOT NULL ya que no tiene sentido que stas columnas carezcan de valor.
Adems se crea la clave primaria y la clave fornea que hace referencia a CLIENTE Con la clusula ON DELETE CASCADE hacemos que si se borra un cliente, se borren automticamente todas sus facturas.
Si no la incluysemos, al borrar el cliente, nos dara el siguiente error:
ORA-02292: integrity constraint (FK_CLIENTE) violated - child record found
Hay que tener en cuenta que aunque la clave fornea se crea sobre la tabla FACTURA, tambin acta cuando se hacen operaciones sobre CLIENTE.
Al intentar insertar una factura a un cliente inexistente nos dar el siguiente error:
ORA-02291: integrity constraint (FK_CLIENTE) violated - parent key not found
Se puede encontrar una descripcin detallada de todos los errores en el Oracle8 Error Messages.</font>