Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

giovanini

ORA-00907: parêntese direito não encontrado

Recommended Posts

boa tarde pessoal, estou fazendo a criação de umas tabelas pra faculdade, nada muito complicado, mas estou recebendo o erro de parêntese não encontrado quando faço a criação da tabela associado. Os parênteses estão certos e não vejo nenhum erro além disso..
Peço a ajuda de vocês. Segue o script:

(a criação das outras tabelas está tudo certo)

DROP TABLE ENDERECO;
DROP TABLE GRUPO;
DROP TABLE PRODUTO;
DROP TABLE ASSOCIADO;

-- CRIAÇÃO DAS TABELAS
CREATE TABLE ENDERECO
    (
        estado        varchar(2)      NOT NULL,
        bairro        varchar(20),
        cidade        varchar(20),
        cep           varchar(9)      NOT NULL,
        rua           varchar(20)     NOT NULL,
        numero        varchar(20)     NOT NULL,
        complemento   varchar(20)     NOT NULL,
        
        CONSTRAINT ENDERECO_PK
        PRIMARY KEY(cep, rua, numero, complemento),
        
        CONSTRAINT ESTADO_CHK CHECK (estado IN ('AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO'))
    );

CREATE TABLE GRUPO
    (
        nome_grupo  varchar(30)   CONSTRAINT GRUPO_FK PRIMARY KEY,
        nro_participantes  int    NOT NULL,
        ano_entrada varchar(4)    NOT NULL,
        mes_entrada varchar(2)    NOT NULL,
        dia_entrada varchar(2)    NOT NULL,
        ano_saida   varchar(4)    NOT NULL,
        mes_saida   varchar(2)    NOT NULL,
        dia_saida   varchar(2)    NOT NULL
    );

CREATE TABLE PRODUTO
    (
        cod_produto    integer         constraint PRODUTO_PK primary key,
        nome_produto   varchar(20)     NOT NULL,
        descricao      varchar(30)             ,
        preco          real            NOT NULL
    );

CREATE TABLE ASSOCIADO
    (
        cpf_associado       varchar(14)    CONSTRAINT ASSOCIADO_PK PRIMARY KEY(cpf_associado),
        rg_associado        integer                ,
        ultimo_pgto         date           DEFAULT SYSDATE,
        primeiroNome        varchar(15)    NOT NULL,
        nomeMeio            varchar(15)    NOT NULL,
        ultimoNome          varchar(15)    NOT NULL,
        data_cadastro       date           DEFAULT SYSDATE,
        email               varchar(30)    NOT NULL,
        cargo_administrador varchar(20)            ,
        valor               real           NOT NULL,
        cep                 varchar(9)     NOT NULL,
        rua                 varchar(20)    NOT NULL,
        numero              varchar(20)    NOT NULL,
        complemento         varchar(20)    NOT NULL,
        
        CONSTRAINT ASSOCIADO_ENDERECO_FK 
        FOREIGN KEY (cep, rua, numero, complemento) REFERENCES ENDERECO(cep, rua, numero, complemento)
        ON UPDATE CASCADE ON DELETE CASCADE
        );​


Pessoal, peço desculpas... o que tinha feito estava errado.

 

eu tinha escrito:

 

cpf_associado varchar(14) CONSTRAINT ASSOCIADO_PK PRIMARY KEY(cpf_associado),

 

 

e nessa forma de escrever chave primaria não precisa por a chave primária no final...

 

mas com isso corrigido, o oracle me dá o erro "

0.00 CREATE TABLE ASSOCIADO ( cpf_associado var ORA-00905: palavra-chave não encontrada"

 

 

alguma ideia?



eu resolvi aqui pessoal removendo os comandos "ON UPDATE CASCADE ON DELETE CASCADE"

não entendi muito o pq disso, alguém poderia explicar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achar parentenses faltando ou sobrando é a coisa mais chata da TI ...

Me parece que a última linha da tabela ASSOCIADO tinha o parenteses a mais, crie o ON DELETE a parte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Motta, os parênteses estavam certo...era isso do ON DELETE CASCADE que estava dando erro.

Obrigado pela ajuda.

 

(edit: estava usando o Oracle da minha faculdade via proxy mas o servidor lá caiu e não consigo mais acessar o oracle. Assim, fiz algumas modificações e agora estou usando o mySql via cmd aqui no meu computador..e o erro que falarei agora é do MySQL e não do oracle (não sei se tem mta diferença..))

 

Agora estou com um outro erro quando crio a tabela FORNEC_PRODUTO:

 

CREATE TABLE FORNEC_PRODUTO
    (
        cnpj_fp   varchar(25)    NOT NULL,
        cod_prod  varchar(30)    NOT NULL,
        
        CONSTRAINT FP_FORNEC_FK
        FOREIGN KEY(cnpj_fp) REFERENCES FORNECEDOR(cnpj),
        
        CONSTRAINT FP_PROD_FK
        FOREIGN KEY(cod_prod) REFERENCES PRODUTO(cod_produto),
        
        CONSTRAINT FORN_PRODUTO_PK
        PRIMARY KEY(cnpj_fp, cod_prod) 
    );

 

 

as chaves primárias são chaves estrangeiras de 2 tabelas(PRODUTO e FORNECEDOR). Seguem as duas:

 

CREATE TABLE PRODUTO
    (
        cod_produto    integer                 ,
        nome_produto   varchar(30)     NOT NULL,
        descricao      varchar(30)             ,
        preco          real            NOT NULL,
constraint PRODUTO_PK primary key(cod_produto)
    );

CREATE TABLE FORNECEDOR
    (
        cnpj            varchar(25)           ,
        primeiroNome    varchar(15)   NOT NULL,
        nomeMeio        varchar(15)           ,
        ultimoNome      varchar(15)   NOT NULL,
        telefone        varchar(20)   NOT NULL,
        Fcep            varchar(9)    NOT NULL,
        Frua            varchar(20)   NOT NULL,
        Fnumero         varchar(20)   NOT NULL,
        Fcomplemento    varchar(20)   NOT NULL,
        
        CONSTRAINT FORNECEDOR_ENDERECO_FK
        FOREIGN KEY (Fcep, Frua, Fnumero, Fcomplemento) REFERENCES ENDERECO(cep, rua, numero, complemento),
	CONSTRAINT FORNECEDOR_PK PRIMARY KEY(cnpj)
    );

 

 

 

 

O erro diz que não posso adicionar uma restrição pra chave estrangeira (error 1215: cannot add foreign key constraint).



achei o erro, a definição de cod_produto em PRODUTO é um integer e na FORN_PRODUTO defini como varchar, nunca ia dar certo meso..

pode marcar o tópico como resolvido.

 

Valeu Motta!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.