Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Dúvida no Ex. 4 da Aula 2 - Atualizando e excluindo dados

Boa tarde,

Bom estou dando seguimento ao curso em Database Oracle e estou com o seguinte problema, sei que minha SQL a sintaxe está correta , mas acontece esse erro e já pesquisei o que é e não achei muita coisa a respeito que me ajudasse, quem puder me ajudar abaixo se encontra o erro.

SQL> UPDATE compras SET observacoes = 'entregue antes de 2011', recebido = '1' WHERE data BETWEEN '01-JUL-2009' AND '01-JUL-2010'; UPDATE compras SET observacoes = 'entregue antes de 2011', recebido = '1' WHERE data BETWEEN '01-JUL-2009' AND '01-JUL-2010' * ERRO na linha 1: ORA-02290: restriþÒo de verificaþÒo (SYSTEM.SYS_C006997) violada

8 respostas

Tayran, Boa Noite !

esse erro está acontecendo pois alguma coluna que você com verificação , está restringindo seu dado .

na criação da tabela , acredito que a coluna recebido , você tenha colocado desse jeito :

recebido char check (recebido in(0,1)

ok , tenta utilizar o comando atualizar , assim :

UPDATE compras SET observacoes = 'entregue antes de 2011', recebido = 1 WHERE data BETWEEN '01-JUL-2009' AND '01-JUL-2010

onde o valor para o recebido seja 1 sem aspa simples, pois acredito que ele esteja restringindo por causa das aspas .

qualquer coisa coloque sua dúvida novamente aqui

Bons Estudos

Acontece o mesmo erro, Obrigado.

Já tinha testado como String e também dessa forma , as duas resultam no mesmo erro.

Olá Tayran,

tente criar a tabela novamente então.

Para deletar a tabela o comando é: drop table nomeDaTabela;

Tayran,

poste aqui a criação da sua tabela para verificar, como você colocou a restrição no campo recebido .

create table compras ( id number primary key, valor number, data date, observacoes varchar2(30), recebido char check (recebido in (0,1)) );

Agora está dando tudo certo , única coisa que fiz diferente na minha tabela foi colocar observacoes com 50 caracteres.

Posso aproveitar e fazer outra pergunta simples ? Como eu reseto o id_seq para ele voltar pro ID 1 ? exemplo quando a minha tabela foi populada novamente mas ela começa do 161 ao 202, gostaria de resetar para começar do 1 novamente e eu dar um drop table e popular a tabela novamente.

solução!

Tayran,

que bom que resolveu o problema com sua tabela .

Em relação a sua dúvida , como você colocou com id_seq , não sei se há como recomeçar a contagem .

o jeito seria apagar a tabela e criar novamente .

mas pesquisando na internet encontrei o seguinte comando , que você poderia tentar

alter sequence serial restart start with 0;

caso dê certo esse comando , nos avise aqui .

serial seria o id_seq ?

Bom essa forma de Alterar sequência só funciona no Postgree

A solução que encontrei foi : DROP SEQUENCE id_seq;

em seguida : CREATE SEQUENCE id_seq;

novamente fazer o insert das informações , eu vi umas SQL gigantes explicando como faz isso, mas como estava muito mal explicado preferi não testar.

Obrigado a todos , minha dúvidas foram solucionadas.