13 - Clave primaria (primary key) |
Trabajamos con la tabla "usuarios".
Eliminamos la tabla:
drop table usuarios;
Creamos la tabla definiendo el campo "nombre" como clave primaria:
create table usuarios( nombre varchar2(20), clave varchar2(10), primary key (nombre) );
Al campo "nombre" no lo definimos "not null", pero al establecerse como clave primaria, Oracle lo convierte en "not null", veamos que en la columna "NULL" aparece "NOT NULL":
describe usuarios;
Ingresamos algunos registros:
insert into usuarios (nombre, clave) values ('juanperez','Boca'); insert into usuarios (nombre, clave) values ('raulgarcia','River');
Recordemos que cuando un campo es clave primaria, sus valores no se repiten. Intentamos ingresar un valor de clave primaria existente:
insert into usuarios (nombre, clave) values ('juanperez','payaso');
aparece un mensaje de error y la sentencia no se ejecuta.
Cuando un campo es clave primaria, sus valores no pueden ser nulos. Intentamos ingresar el valor "null" en el campo clave primaria:
insert into usuarios (nombre, clave) values (null,'payaso');
aparece un mensaje de error y la sentencia no se ejecuta.
Si realizamos alguna actualización, Oracle controla que los valores para el campo establecido como clave primaria no estén repetidos en la tabla. Intentemos actualizar el nombre de un usuario colocando un nombre existente:
update usuarios set nombre='juanperez' where nombre='raulgarcia';
aparece un mensaje indicando que se viola la clave primaria y la actualización no se realiza.
Corroboramos que la tabla "usuarios" tiene establecido el campo "nombre" como clave primaria realizando la siguiente consulta (Recuerde colocar el nombre de la tabla en mayúsculas, sino Oracle considerará que no existe la tabla):
select uc.table_name, column_name from user_cons_columns ucc join user_constraints uc on ucc.constraint_name=uc.constraint_name where uc.constraint_type='P' and uc.table_name='USUARIOS';
Aparece la siguiente tabla:
TABLE_NAME COLUMN_NAME -------------------------------------------- USUARIOS NOMBRE
indicando que la tabla "usuarios" tiene establecido el campo "nombre" como clave primaria.