Ir para conteúdo

POWERED BY:

Arquivado

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

Junior Simões

relacionando duas tabelas

Recommended Posts

Galera tenho duas tabelas, é um relacionamento 1 para 1 mas gostaria de uma ajuda em uma coisa , esta certo do modo que estou fazendo como uso aquele esquema e cascate on, delete on.

que se deletar um campo na tabela cadastro, tbm é deletado na taela cadastro cargas, alguem pode me dar um auxilio.

 

create table cadastro (idCadastro int(11) not null primary key auto_increment,sentido char(32),data date,pracaPegagio char(32),tipodeVeiculo char(32),arrecadador char(30),horario time,origem char(60),destino char(60));create table cadastrocargas(idcadastroCargas int(11) not null auto_increment PRIMARY KEY,eixo char(32),idCadastro int(11) not null ,frequenciaUtilizacao char(32),avaliacaoVianorte char(32),postoUtilizado char(32),tempodeViajem char(32),FOREIGN KEY (idCadastro) REFERENCES cadastro (idCadastro)); 

A maneira que estou inserindo

 

<?phprequire("conectdb.php");//tabela cadastro$sentido = ($_POST['sentido']);$datainsert = strip_tags($_POST['datainsert']);$pracaPedagio = strip_tags($_POST['pracaPedagio']);$tipodeVeiculo = strip_tags($_POST['tipodeVeiculo']);$arrecadador = strip_tags ($_POST['arrecadador']);$horario = ($_POST['horario']);$Origem = ($_POST['codOrigem']);$Destino = ($_POST['codDestino']);//convertendo data$data = implode(preg_match("~\/~", $datainsert) == 0 ? "/" : "-", array_reverse(explode(preg_match("~\/~", $datainsert) == 0 ? "-" : "/", $datainsert)));//tabela cadastrocargas$eixos = ($_POST['eixos']);$frequenciaUtilizacao = ($_POST[' frequenciaUtilizacao' ]);$avaliacaoVianorte = ($_POST['avaliacaoVianorte' });$postoUtilizado = ($_POST['postoUtilizado']);$tempodeViajem = ($_POST['tempodeViajem']);$sqlinsert = "INSERT INTO cadastro ( sentido, data, pracaPedagio, tipodeVeiculo, arrecadador, horario, Origem, Destino )VALUES('$sentido', '$data', '$pracaPedagio', '$tipodeVeiculo', '$arrecadador', '$horario', '$Origem', '$Destino')";$sqlinsert = "INSERT INTO cadastrocargas ( eixos, frequenciaUtilizacao, postoUtilizado, tempodeViajem)VALUES('$eixos', '$frequenciaUtilizacao', '$postoutilizado', '$tempodeViajem')";mysql_query($sqlinsert) or die ("Erro no insert: " . mysql_error());?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para usar o CASCADE, e se realmente é isso que você deseja pois sua pergunta não foi muito clara, você deverá alterar a engine das suas tabelas, caso elas estejam usando MyISAM.

 

Primeira coisa:

 

[color= #993333; font-weight: bold;]SHOW TABLE STATUS;

 

...esse comando lhe mostrará qual engine suas tabelas estão utilizando. Caso seja MyISAM, teremos que alterá-las para InnoDB, pois tabelas MyISAM não tem suporte a Integridade Referencial, ou seja, chaves estrangeiras somente criam um índice mais não conferem a informação ao serem inseridas.

 

Para isso, você ter;a aqui abrir o arquivo my.ini, geralmente localizado em C:\Windows\my.ini; com este arquivo aberto, comente a linha skip-innodb[/color] com um #, salve o arquivo e reinicie o mysql com os seguintes comandos digitados no prompt:

 

Parando:

 

net stop mysql

 

Iniciando:

 

net start mysql

 

Muito bom, agora já temos tabelas InnoDB em nosso servidor de bancos de dados MySQL, então podemos coverter nossas tabelas MyISAM em InnoDB.

 

ALTER TABLE <nome_tabela> ENGINE =InnoDB;

 

Faça isso com as tabelas que esteja envolvidas em todas as relações. Para que o comando de Integridade Referencial funcione adequadamente e o MySQL permita a criação de uma "ligação" entre as tabelas, os campos devem armazenar o mesmo tipo de dados, e as duas ou mais tabelas devem obrigatoriamente ser do tipo InnoDB, acso contrário você será exposto ao erro 150 ou 102. Para checar erros na criação de foreign key (chaves estrangeiras) no MySQL, após o erro digite SHOW INNODB STATUS, esse comando lhe mostrará o log de erros do engine.

 

Bom, vamos ao comando para criar o CASCADE:

 

ALTER TABLE <nome_tabela> ADD CONSTRAINT fk_nome_chave

FOREIGN KEY (nome_campo_referencia) REFERECES <nome_tabela_referenciada>(<nome_campo_referenciado)

ON DELETE CASACADE

ON UPDATE CASCADE;[sql]

 

...ou seja, o campo referencia é o campo chave na tabela filha e o tabela refereciada e o campo referenciado são da tabela pai.

 

Siga os passos, qualquer dúvida, continue postando!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.