Ir para conteúdo
Fórum Script Brasil
  • 0

Erro utilizando FK's


Marcos P. Fontana

Pergunta

Gente estou com problemas em implementar uma tabela Pedidos usando FK"s para ex. idMed de uma tabela Medicamentos, idCliente de uma tabela Clientes. Segue o código abaixo.

-- Banco de Dados Farmácia

DROP DATABASE if exists farmacia;
CREATE DATABASE farmacia;
USE farmacia;

-- Criando as Tabelas

CREATE TABLE IF NOT EXISTS Medicamentos
(
    idMed            INT(5)        NOT NULL    AUTO_INCREMENT,
    Nome             VARCHAR(30)    NOT NULL,
    Substancia_principal     VARCHAR(30)    NOT NULL,
    Validade        VARCHAR(10)            NOT NULL,
    Preço             FLOAT(10)     NOT NULL,
PRIMARY KEY(idMed)
);

CREATE TABLE IF NOT EXISTS Fornecedor
(
    idFornecedor     INT(5)        NOT NULL    AUTO_INCREMENT,
    Nome         CHAR(30)            NOT NULL,
    Endereço    VARCHAR(50)            NOT NULL,
    CNPJ        VARCHAR(18)            NOT NULL,
    PRIMARY KEY(idFornecedor)
);

CREATE TABLE IF NOT EXISTS Conveniencia
(
    idConveniencia    INT(5)        NOT NULL    AUTO_INCREMENT,
    Nome        VARCHAR(30)     NOT NULL,
    Fabricante    VARCHAR(30)            NOT NULL,
    Preço        FLOAT(10)      NOT NULL,
    PRIMARY KEY(idConveniencia)
);

CREATE TABLE IF NOT EXISTS Cliente
(
    idCliente    INT(5)        NOT NULL     AUTO_INCREMENT,
    Nome        CHAR(30)    NOT NULL,
    CPF        INT(11)        NOT NULL,
    RG        INT(9)        NOT NULL,
    Endereço    CHAR(100)    NOT NULL,
    Telefone    INT(11)        NOT NULL,
    Nascimento    INT(10)    NOT NULL,
    Lst_Buy        CHAR(10)    NULL,
    PRIMARY KEY(idCliente)
);

CREATE TABLE IF NOT EXISTS Usuario
(
    idUsuario    INT(5)                NOT NULL     AUTO_INCREMENT,
    Senha        VARCHAR(6)    NOT NULL,
    PRIMARY KEY(idUsuario)
);

CREATE TABLE IF NOT EXISTS Funcionario
(
    idFuncionario        INT(5)        NOT NULL     AUTO_INCREMENT,
    idUsuario                INT(5)            NOT NULL,
    Senha            varchar(6)            NOT NULL,
    Nome            CHAR(30)           NOT NULL,
    Endereço                CHAR(100)    NOT NULL,
    Telefone                INT(11)        NOT NULL,
    Cargo            INT(1)        NOT NULL,
    Salario            FLOAT(10)            NOT NULL,
    PRIMARY KEY(idFuncionario)
);

CREATE TABLE IF NOT EXISTS Pedido
(
    idVenda        INT(5)        NOT NULL     AUTO_INCREMENT,
    idCliente     INT(5),        
    idFuncionario    INT(5),
    Data_Venda    CHAR(10)            NOT NULL,
    idMed        INT(5),
    idConveniencia    INT(5),    
    Total        FLOAT(10),    
    PRIMARY KEY (idVenda)
    FOREIGN KEY (idMed)         REFERENCES medicamentos (idMed)     ON DELETE SET NULL
    FOREIGN KEY (idConveniencia)     REFERENCES conveniencia (idConveniencia)ON DELETE SET NULL
    FOREIGN KEY (idFuncionario)     REFERENCES funcionario (idFuncionario)     ON DELETE SET NULL
    FOREIGN KEY (idCliente)             REFERENCES cliente (idCliente)         ON DELETE SET NULL
);

Preciso de ajuda o mais rápido possível pois isso é apenas o começo do meu trabalho e realmente preciso da ajuda de vocês.

Abraços

Editado por Denis Courcy
Melhorar entendimento do código
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá! Eu vou aproveitar o tópico, pois tenho também uma duvida sobre FKs.

Eu tenho que criar uma tabela, que leva as chaves primarias de outras duas tabelas. Eu consegui criar uma FK de uma das tabelas, porém, quando eu crio a segunda FK da segunda tabela, o MySql Query acusa o erro:

Mysql Error 1005

Can't create table 'datavenda.#sql122c-1'(erno 150)

alguém poderia me dar uma dica de como resolver isso? Eu já recriei a tabela, tentei criar uma de cada vez e tal...Mas nada deu certo! =/

Link para o comentário
Compartilhar em outros sites

  • 0
Olá! Eu vou aproveitar o tópico, pois tenho também uma duvida sobre FKs.

Eu tenho que criar uma tabela, que leva as chaves primarias de outras duas tabelas. Eu consegui criar uma FK de uma das tabelas, porém, quando eu crio a segunda FK da segunda tabela, o MySql Query acusa o erro:

Mysql Error 1005

Can't create table 'datavenda.#sql122c-1'(erno 150)

alguém poderia me dar uma dica de como resolver isso? Eu já recriei a tabela, tentei criar uma de cada vez e tal...Mas nada deu certo! =/

Aconteceu o mesmo erro comigo também. Tente acrescentar a frente de cada FK a instrução ON DELETE NO ACTION/RESTRICT

Resolveu o meu problema, espero que resolva o seu.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...