Jump to content
agness

[Resolvido] porque registro referenciado em chave estrangeira pode ser apagado?

Recommended Posts

tenho um registro que esta sendo referenciado em outra tabela como chave estrangeira. Ao tentar deletá-lo, creio que o próprio SGBD não deve permitir dar um delete nele. Mas meu banco executa o delete. Tem alguma coisa que não percebi? seque o código em anexo

Sem título.png

Share this post


Link to post
Share on other sites

o que retorna

select * from cursos

select * from pessoas

apos o delete ?

Share this post


Link to post
Share on other sites

select * from cursos:

id   nome

1    matematica

 

select * from pessoas:

id  nome       cursoFavorito

1   fulano      1

2   beltrano   2

Share this post


Link to post
Share on other sites

você tinha deletado o 1.

A chave é autoincrement e numerica algo errado aqui ...

Share this post


Link to post
Share on other sites
2 horas atrás, Motta disse:

você tinha deletado o 1.

A chave é autoincrement e numerica algo errado aqui ...

quando você fala que a chave é numérica, se refere a ela ser tipo int?

é autoincrement pra não precisar declarar ela toda vez que inserir um novo registro

Share this post


Link to post
Share on other sites

Deletou, no select * from cursos, já não tem o curso 2.

To quebrando a cabeça com isso pra poder continuar o projeto com um banco íntegro

Share this post


Link to post
Share on other sites

Mas você deletou o id 1 ...e ele tá lá

Faz de novo , dropa tudo , não informa o id no insert e deleta com

Where nome = 'matenatica'

 

Funciona , acredite.

Share this post


Link to post
Share on other sites
Em 06/09/2019 at 23:10, agness disse:

select * from cursos:

id   nome

1    matematica

 

select * from pessoas:

id  nome       cursoFavorito

1   fulano      1

2   beltrano   2

aqui eu fiz o teste com delete where id=2

Share this post


Link to post
Share on other sites

Refaça o teste , não informe id no insert , e delete sem converter para string

Share this post


Link to post
Share on other sites

Desinstalei o wamp e instalei o xampp e não está mais com esse problema, desconfio que o mysql do wamp estivesse mal configurado ou algo assim

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By lucascientista
      Boa noite, galera é o seguinte eu estou montando um script que pesquisa no banco de dados e mostrar os resultados em uma página php, bem aí que está o problema eu pesquisei alguns sistemas de paginação e de pesquisa e acabei montando meu script, no meu script a pesquisa aparece na primeira página mas quando passo para a página adiante não me é mostrado resultado nenhum já verifiquei tudo e não consigo encontrar o erro, será que alguém pode me ajudar?
       
      <?php #Incluindo a conexão no banco de dados require_once '../dao/conexao/Conexao.php'; $conexao = Conexao::getInstance(); /***********************************************/ #Aqui começa a parte a paginação e pesquisa /**********************************************/ #Limitando o número máximo de resultados que serão mostrados na tela $maximo = 1; #Armazenando o valor da página atual $pagina = isset($_GET["pagina"])? ($_GET["pagina"]): '1'; #Subtraindo 1, porque os registro começam do zero como em um array $inicio = $pagina - 1; #Multiplicamos a quantidade de registros da pagina pelo valor da pagina atual $inicio = $maximo * $inicio; #Agora chega a parte em que fazemos o SELECT para contar os resultados $sql = "SELECT * FROM centroautomotivo"; $stmt = $conexao->prepare($sql); $stmt->execute(); $contagem = $stmt->fetchAll(PDO::FETCH_ASSOC); $total = 0; if(count($contagem)){ foreach ($contagem as $linhas) { #Armazenando o total de registros da tabela para fazer a paginação $total = count($contagem); } } /******************************************************************* * Aqui vai começar a parte da pesquisa, tornando o script em um só ********************************************************************/ #Recebe o termo da pesquisa se existir $termo = (isset($_GET["termo"])) ? ($_GET["termo"]) : ''; #Executa uma pesquisa com o termo pesquisado como parametro - Este SELECT irá servir também para a paginação if(empty($termo)){ //Nada aqui } else{ $sql = "SELECT * FROM centroautomotivo WHERE nomefantasia LIKE :nomefantasia or email LIKE :email ORDER BY idCentro LIMIT $inicio,$maximo"; $stm = $conexao->prepare($sql); $stm->bindValue(':nomefantasia', '%'.$termo.'%'); $stm->bindValue(':email', '%'.$termo.'%'); $stm->execute(); $autocenters = $stm->fetchAll(PDO::FETCH_ASSOC); } <?php require_once '../includes/header.php'; require_once '../controller/paginacaoPesquisaCentro.php'; ?> <div class="container mb-5"> <h1 class="text text-center">Centros Automotivos</h1> <p class="text text-center">Encontre o centro automotivo que mais se encaixa com você</p> <!--Formulário de pesquisa com paginação--> <form method="GET" action=""> <div class="d-flex flex-column bd-highlight mb-3"> <div class="p-2 bd-highlight"><img src="../img/Logotipo.png" class=" img-fluid rounded mx-auto d-block"></div> <div class="p-2 bd-highlight d-flex justify-content-center" style="margin-top: -10px;"><input type="text" name="termo" class="form-control" style=" width: 60%;" placeholder="Pesquise pelo Centro Automotivo!"/></div> <div class="p-2 bd-highlight d-flex justify-content-center"><button type="submit" class="btn btn-outline-primary"><i class="fas fa-search"></i>&nbsp;Pesquisar</button></div> </div> </form> <!--Fim do formuláio de pesquisa--> <!--Início dos resultados da pesquisa--> <?php if(!empty($autocenters)){?> <?php foreach ($autocenters as $autocenter) { ?> <center> <div class="card mb-3" style="max-width: 540px;"> <div class="row no-gutters"> <div class="col-md-4"> <img src="../controller<?php empty($autocenter["foto"])? 'images/pic.png' : $autocenter["foto"] ?>" class="card-img img-fluid" width="150px" height="150px"> </div> <div class="col-md-8"> <div class="card-body"> <p class="card-text text-justify"><?php $autocenter["nomefantasia"]?></p> <p class="card-text text-justify"><small class="text-muted"><?=$autocenter["email"]?></small></p> </div> </div> </div> </div> </center> <?php }//Fechamento do foreach?> <div id="alignpaginacao"> <?php //determina de quantos em quantos links serão adicionados e removidos $max_links = 6; //dados para os botões $previous = $pagina - 1; $next = $pagina + 1; //usa uma funcção "ceil" para arrendondar o numero pra cima, ex 1,01 será 2 $pgs = ceil($total / $maximo); //se a tabela não for vazia, adiciona os botões if($pgs > 1 ){ echo "<br/>"; //botao anterior if($previous > 0){ echo "<div id='botaoanterior'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' /></a></div>"; } else{ echo "<div id='botaoanteriorDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$previous><input type='submit' name='bt-enviar' id='bt-enviar' value='Anterior' class='button' disabled='disabled'/></a></div>"; } echo "<div id='numpaginacao'>"; for($i=$pagina-$max_links; $i <= $pgs-1; $i++) { if ($i <= 0){ //enquanto for negativo, não faz nada }else{ //senão adiciona os links para outra pagina if($i != $pagina){ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a> ..."; }else{ echo "<a href=".$_SERVER['PHP_SELF']."?pagina=".($i).">$i</a>"; } } else{ if($i == $pgs){ //se for o final da pagina, coloca tres pontinhos echo "<span class='current'> ".$i."</span> ..."; }else{ echo "<span class='current'> ".$i."</span>"; } } } } echo "</div>"; //botao proximo if($next <= $pgs){ echo " <div id='botaoprox'><a href=".$_SERVER['PHP_SELF']."?termo={$termo}?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button'/></a></div>"; }else{ echo " <div id='botaoproxDis'><a href=".$_SERVER['PHP_SELF']."?pagina=$next><input type='submit' name='bt-enviar' id='bt-enviar' value='Proxima' class='button' disabled='disabled'/></a></div>"; } } ?> </div> <?php }//Fechamento do if?> <!--Fim dos resultados da pesquisa--> <!--Início da paginação--> <!--Fim da paginação--> </div> <?php require_once '../includes/footer.php'; ?>  
      Bem aí está meu código, fico muito agradecido se puderem me ajudar.
    • By luisfeliperm2
      PHP Exibe mensagem Warning mesmo tratando exceção, como impedir isto ? Na mensagem é exibida o usuário e senha do meu banco de dados
      Observe: Não quero desativar as mensagens de Warning na configuração do PHP. Quero apenas impedir que não seja mostrado essa mensagem na função de conexão com a DB


    • By Ana Miguel
      Quero selecionar o quantidade de Num_CP conforme a data atual, por isso estou usando a função GETDATE(), porém o meu SQL aponta o seguinte erro:
      Meu Código:
      BEGIN SET NOCOUNT ON; DECLARE @QUANTIDADE_CPS INT; DECLARE @D0 DATE; SET @D0 = (SELECT DATEADD(day, 0, GETDATE()) FROM VW_Vendas); SET @QUANTIDADE_CPS = (SELECT COUNT(NUM_CP) FROM VW_Vendas); SELECT CONVERT(VARCHAR,(@D0)) AS DATA_ATUAL, CONVERT(VARCHAR,(@QUANTIDADE_CPS)) AS QUANTIDADE_CPS FROM VW_Vendas VW0 WHERE VW0.DT_CRIACAO = @D0    SELECT 'RESULTADO', (     SELECT @D0 AS DATA_ATUAL, @QUANTIDADE_CPS AS QUANTIDADE_CPS FROM VW_Vendas VW0 WHERE VW0.SITUACAO_RECADO IS NOT NULL     AND VW0.SITUACAO_RECADO LIKE '%Aguardando Aprovação Cliente%' AND VW0.DT_CRIACAO = GETDATE() ) 'DATAS DIA ZERO' END GO
    • By skti
      Olá,
      preciso fazer uma query que retorne os valores os agrupando de 5 em 5 minutos. Exemplo: valor1 = 'XXX' hora = '11:13', valor2 = 'XXX' hora = '11:17', valor3 = 'XXX' hora = '11:30', valor4 = 'XXX' hora = '11:36' - Os valores valor1 e valor2 devem ficar agrupados juntos (pois estão dentro do intervalo de 5 minutos), já o valor3 e valor4, separados.
      Qualquer dúvida, só perguntar. Obrigado pela atenção.
       
      No momento minha query agrupa os valores de hora em hora:
      $sql_serv = "SELECT left(hora_cri, 2) as hora,campanha,COUNT(*) as qtd FROM ".$tabelaOperacao." WHERE data_cri = '" . $data . "' AND campanha IN ('".$campanha."') GROUP BY left(hora_cri, 2), campanha";
    • By WilsoncCP
      Já tentei muito mas não sei como resolver, se alguém me der uma luz de como resolver ficarei muito agradecido.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.