giovanini 0 Denunciar post Postado Maio 11, 2013 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
Motta 645 Denunciar post Postado Maio 11, 2013 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
giovanini 0 Denunciar post Postado Maio 11, 2013 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