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

(Resolvido) Como e o script de foreign key ?


Henrique Neto

Pergunta

Eu tenho duas tabelas,

servicos e cliente

eu quero botar chave estrangeira em cliente com o id de servicos como é o codigo o script do mysql?

create table wip_cliente (

cli_id int not null auto_increment,

cli_nome varchar(50) not null,

cli_cpf varchar(11) not null,

cli_rg varchar(10) not null,

cli_datanasc date not null,

cli_end varchar(45) not null,

cli_complemento varchar(20) null,

cli_num float not null,

cli_cep char(8) not null,

cli_bairro varchar(45) not null,

cli_cidade varchar(45) not null,

cli_telefone varchar(12) not null,

cli_email varchar(45) not null,

cli_formapagamento varchar(45) not null,

cli_cartao float null,

cli_validade date null,

cli_codigo int null,

cli_banco varchar(40) null,

cli_ag int null,

cli_conta float null,

PRIMARY KEY (cli_id) )

CONSTRAINT 'fk_se_id'

FOREIGN KEY ('cli_id' )

REFERENCES 'withoutpaper'.'wip_servicos' ('se_id')

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB;

create table wip_servicos(

se_id int not null auto_increment,

se_nome varchar(50) not null,

se_preco float not null,

PRIMARY KEY (se_id) )

Tentei assim e não consegui!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

so da error de sintaxe

tentei agora alterar a tabela com o seguinte codigo e não consigo também

ALTER TABLE wip_cliente ADD CONSTRAINT fk_servico FOREIGN KEY (servico_cliente) REFERENCES wip_servicos (se_id)

ON DELETE RESTRICT

ON UPDATE RESTRICT

vi falar q tem q botar algo Engine:iDDOb algo assim ???

poderiam me explicar desde já grato.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Henrique Neto'

Se você quer que o relacionamento entre clientes e serviços seja de 1 para muitos (1:N) Um cliente pode realizar muitos serviços. Então o código do cliente deve estar na tabela de serviços para que o relacionamento possa ser estabelecido.

Então teremos a seguinte estrutura de cliente:

create table wip_cliente (
  cli_id int not null auto_increment,
  cli_nome varchar(50) not null,
  cli_cpf varchar(11) not null,
  cli_rg varchar(10) not null,
  cli_datanasc date not null,
  cli_end varchar(45) not null,
  cli_complemento varchar(20) null,
  cli_num float not null,
  cli_cep char(8) not null,
  cli_bairro varchar(45) not null,
  cli_cidade varchar(45) not null,
  cli_telefone varchar(12) not null,
  cli_email varchar(45) not null,
  cli_formapagamento varchar(45) not null,
  cli_cartao float null,
  cli_validade date null,
  cli_codigo int null,
  cli_banco varchar(40) null,
  cli_ag int null,
  cli_conta float null,
  PRIMARY KEY (cli_id) 
)ENGINE = InnoDB;
e a tabela de serviços será:
create table wip_servicos(
se_id int not null auto_increment,
cli_id int not null default 0,
se_nome varchar(50) not null,
se_preco float not null,
PRIMARY KEY (se_id),
CONSTRAINT fk_se_id FOREIGN KEY (cli_id) REFERENCES withoutpaper.wip_cliente(cli_id) ON DELETE NO ACTION ON UPDATE NO ACTION)ENGINE = InnoDB;

Link para o comentário
Compartilhar em outros sites

  • 0

e o contrario eu quero que a chave esteja de servicos em cliente, o cliente tem um servico,e não um servico tem um cliente.

create table wip_cliente (
  cli_id int not null auto_increment,
  cli_nome varchar(50) not null,
  cli_cpf varchar(11) not null,
  cli_rg varchar(10) not null,
  cli_datanasc date not null,
  cli_end varchar(45) not null,
  cli_complemento varchar(20) null,
  cli_num float not null,
  cli_cep char(8) not null,
  cli_bairro varchar(45) not null,
  cli_cidade varchar(45) not null,
  cli_telefone varchar(12) not null,
  cli_email varchar(45) not null,
  cli_formapagamento varchar(45) not null,
  cli_cartao float null,
  cli_validade date null,
  cli_codigo int null,
  cli_banco varchar(40) null,
  cli_ag int null,
  cli_conta float null,
  PRIMARY KEY (cli_id),
  CONSTRAINT fk_cli_id FOREIGN KEY (se_id) REFERENCES wip_servicos(se_id) 
  ON DELETE NO ACTION 
  ON UPDATE NO ACTION)
ENGINE = InnoDB
create table wip_servicos(
 se_id int not null auto_increment,
 se_nome varchar(50) not null,
 se_preco float not null,
 PRIMARY KEY (se_id) )

fiz a inversao do que voce me deu deu problema :S

q rezenha

Link para o comentário
Compartilhar em outros sites

  • 0

E onde em wip_cliente você declarou se_id ?

Deveria haver uma declaralçao se_id int not null default 0 na tabela wip_cliente.

Se não tiver esta decleração não vai funcionar.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...