Lab02

Transcrição

Lab02
1. Integridade referencial. Analise e execute o script LAB2.SQL. Ele cria as seguintes
tabelas adicionando uma linha a cada uma delas.
CEPS
CD_CEP: NUMBER(5)
NM_CIDADE: VARCHAR2(30)
EMPREGADOS
NR_EMPREGADO: NUMBER(4)
NM_EMPREGADO: VARCHAR2(30)
CD_CEP: NUMBER(5)
DT_CONTRATA: DATE
a) Tente excluir os registros da tabela CEPS (DELETE FROM CEPS) ou excluir a tabela
como um todo (utilize o comando DROP). Verifique as mensagens. O que elas indicam?
ORA-02292: integrity constraint ... violated - child record found
ORA-02449: unique/primary keys in table referenced by foreign keys
b) Tente inserir uma nova linha em cada uma das tabelas repetindo as chaves primárias
existentes. Verifique a mensagens para cada uma das tabelas as mensagens produzidas. No
que elas diferem? ORA-00001: unique constraint ... violated
Altere o CREATE da tabela EMPREGADOS definindo um nome para a chave primária, a
exemplo do CREATE da tabela CEPS e tente inserir novamente uma chave duplicada.
c) Tente inserir na tabela EMPREGADOS o empregado de nr_empregado 2, com o seu
nome e cep. Verifique a mensagem. ORA-02291: integrity constraint ... violated - parent
key not found. Faça então a alteração necessária para inclusão do empregado.
Neste exercício você verificou como os bancos de dados buscam garantir as integridades
referenciais definidas (aqui PK e FK). Adotaremos, como boa prática, sempre que possível
definir nomes para as constraints para facilitar o diagnóticos de erros e violações de
constratints.
2. CLIENTES e NOT NULL. Crie a tabela CLIENTES conforme o modelo abaixo.
Atribua nomes padrão para as constraints empregadas. Acrescente a constraint NOT NULL
para os atributos de nome do Cliente e Rua (cláusula NOT NULL após o tipo/tamanho do
atributo). Insira ao menos 2 registros de clientes e verifique as mensagens apontadas no
caso da tentativa de inserirem-se registros com NULL nos atributos de nome do Cliente e
Rua.
PEDIDOS
CLIENTES
NR_PEDIDO: NUMBER(5)
NR_CLIENTE: NUMBER(5)
NR_CLIENTE: NUMBER(5)
NR_EMPREGADO: NUMBER(4)
DT_PEDIDO: DATE
TIPO: CHAR(1)
DT_ENTREGA: DATE
NM_CLIENTE: VARCHAR2(30)
NM_RUA: VARCHAR2(30)
CD_CEP: NUMBER(5)
NR_TELEFONE: CHAR(12)
EMPREGADOS
NR_EMPREGADO: NUMBER(4)
NM_EMPREGADO: VARCHAR2(30)
CD_CEP: NUMBER(5)
DT_CONTRATA: DATE
CEPS
CD_CEP: NUMBER(5)
NM_CIDADE: VARCHAR2(30)
3. PEDIDOS e CHECK. Crie a tabela PEDIDOS conforme o modelo anterior. Atribua
nomes padrão para as constraints empregadas. Acrescente a constraint NOT NULL para os
atributos de tipo e data do pedido. Acrescente ainda a cláusula CHECK para o atributo
TIPO (veja exemplo abaixo) restringindo seus valores para os tipos 'E', 'C' e 'D' (especial,
comum e direto). Insira ao menos 2 pedidos e verifique as mensagens apontadas no caso da
tentativa de inserirem-se registros tipos de pedido inválido.
Exemplo de definição da constraint CHECK:
create table tabela (
nome
varchar2(30) primary key,
sexo
char(1),
constraint CK_TABELA_SEXO check (sexo in ('F','M')))

Documentos relacionados

Oracle SQL – Capitulo9

Oracle SQL – Capitulo9 ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found

Leia mais