Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

About this user

Ricardo m. GarcĂ­a

« Newer Snippets
Older Snippets »
Showing 1-1 of 1 total  RSS 

Claves Foraneas / Foreign key

Integridad de datos mediantes claves Foraneas, script que genera las SQL necesarios para garantizar la integridad entre tablas. Poco a poco vamos relacionando parejas de padre e hijo y podemos realizar un arbol de claves foraneas, cuando si borramos un registro del padre, borra y actualiza a los hijos en cascada, si no me explico bien decirme en los comentarios.

   1  
   2  <?php
   3  require_once("cabezera/funciones.php");
   4  conectar_mysql();
   5  require_once("cabezera/scripts/constantes.php");
   6  ?>
   7  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   8  <html xmlns="http://www.w3.org/1999/xhtml">
   9  <head>
  10  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  11  <title>Untitled Document</title>
  12  </head>
  13  
  14  <body>
  15  <?php
  16  $ejecutar = isset($_GET['ejecutar']) && $_GET['ejecutar']=='si';
  17  $tabla_padre = "album";
  18  $tabla_hijo = "fotos";
  19  $campo_padre = "idAlbum";
  20  $campo_hijo = "idAlbum";
  21  
  22  $sinIntegridad = 0;
  23  
  24  $sql="select * from ".$tabla_hijo;
  25  $resultado = mysql_query($sql);
  26  while($fila = mysql_fetch_array($resultado))
  27  {
  28  	$sql2 = "select * from ".$tabla_padre." where ".$campo_padre." = '".$fila[$campo_hijo]."'";
  29  	//echo $sql2."<br/>";
  30  	$resultado2 = mysql_query($sql2);
  31  	if(mysql_num_rows($resultado2) <= 0)
  32  	{
  33  		$sql3 = "DELETE FROM `".$tabla_hijo."` WHERE `".$campo_hijo."` = '".$fila[$campo_hijo]."' LIMIT 1;";
  34  		if($ejecutar)
  35  		{
  36  			if(mysql_query($sql3)) echo "OK query : ".$sql3."<br />";
  37  			else echo "Error en query : ".$sql3."<br />";
  38  		}
  39  		else
  40  		{
  41  			echo $sql3."<br/>";
  42  		}
  43  		$sinIntegridad++;
  44  	}
  45  }
  46  
  47  $sql1="ALTER TABLE `".$tabla_padre."` ADD INDEX ( `".$campo_padre."` ) ";
  48  $sql2="ALTER TABLE `".$tabla_hijo."` ADD INDEX ( `".$campo_hijo."` ) ";
  49  $sql3="ALTER TABLE ".$tabla_hijo." ADD FOREIGN KEY(".$campo_hijo.") REFERENCES ".$tabla_padre." (".$campo_padre.") ON DELETE CASCADE ON UPDATE CASCADE";
  50  if($ejecutar)
  51  {
  52  	if(mysql_query($sql1)) echo "OK query : ".$sql1."<br />";
  53  	else echo "Error en query : ".$sql1."<br />";
  54  	
  55  	if(mysql_query($sql2)) echo "OK query : ".$sql2."<br />";
  56  	else echo "Error en query : ".$sql2."<br />";
  57  	
  58  	if(mysql_query($sql3)) echo "OK query : ".$sql3."<br />";
  59  	else echo "Error en query : ".$sql3."<br />";
  60  }
  61  else
  62  {
  63  	echo $sql1."<br/>";
  64  	echo $sql2."<br/>";
  65  	echo $sql3."<br/>";
  66  }
  67  
  68  echo "<br/>".$sinIntegridad." filas sin integridad.<br/>";
  69  ?>
  70  <form id="form1" name="form1" method="get" action="">
  71    <label>
  72    <input name="ejecutar" type="hidden" id="ejecutar" value="si" />
  73    <input name="Button" type="button" onclick="location.href=location.href" value="Recargar sin ejecutar nada" />
  74    <input type="submit" name="button" id="button" value="Ejecutar SQL!" />
  75    </label>
  76  </form>
  77  <?php
  78  /*
  79  ALTER TABLE fotos_nueva_version ADD FOREIGN KEY(idUsuario) REFERENCES usuarios_portalcocinas (idUsuario) ON DELETE CASCADE ON UPDATE CASCADE
  80  
  81  ALTER TABLE relacion_usuario_localidad ADD FOREIGN KEY(idUsuario) REFERENCES usuarios_portalcocinas (idUsuario) ON DELETE CASCADE ON UPDATE CASCADE
  82  
  83  
  84  ALTER TABLE relacion_usuario_actividad ADD FOREIGN KEY(idUsuario) REFERENCES usuarios_portalcocinas (idUsuario) ON DELETE CASCADE ON UPDATE CASCADE
  85  
  86  
  87  ALTER TABLE fotos_nueva_version DROP FOREIGN KEY idUsuario_FK;
  88  
  89  SHOW CREATE TABLE fotos_nueva_version;
  90  */
  91  ?>
  92  </body>
  93  </html>
  94  
« Newer Snippets
Older Snippets »
Showing 1-1 of 1 total  RSS