Comunidad de diseño web y desarrollo en internet online

Ayuda con MySQL y Triggers!!!

Citar            
MensajeEscrito el 26 Abr 2008 05:48 pm
Bueno mi problema es el siguiente...


Tengo una tabla llamada filesX con tres campos...

ID --> El id del registro
Nombre --> Nombre del registro
Borrar --> Campo que determina si este registro se puede o no borrar.



Entonces quiero hacer un trigger que haga lo siguiente....

Para el campo Borrar el valor 1 = me indica que no se puede borrar y 0 = me indica que si se puede borrar...


Entonces digamos que tengo dos registros

ID Nombres Borrar
1 Registro 1
2 Registro2 0

Entonces que digamos que hago esto...

delete from filesX where id = '1';

Kiero que antes de que se ejecute esa consulta haya un trigger para la misma tabla que me verifique si el regsitro a eliminar puede ser eliminado y si en caso no lo es pues que anule la consulta delete...



No se si me di a entender.... de antemano les agradesco sus ideas y ayudas..!

Por jripper

228 de clabLevel

2 tutoriales

Genero:Masculino  

msie7
Citar            
MensajeEscrito el 27 Abr 2008 06:21 pm
A ver si entiendo, tienes 10 registros, 6 con "0" (no borrabless) y 4 con "1" (borrables). Entonces quieres que al ejecutar un $delete, te elimine los "borrables" (1).

Puede ser algo así

Código :


<?
//-- OBTENGO LA CANTIDAD DE RESULTADOS
$check = mysql_query("SELECT * FROM filesX");
$resultados = 0;

//--  SI TENGO MÁS DE 1 REGISTRO, COMIENZO LA ELIMINACIÓN
if ($resultados > 0) {
  while ($row = mysql_fetch_array($check)) {

    //-- SI EL REGISTRO TIENE LA PROPIEDAD BORRAR=1, ELIMINO
    if ($row['borrar'] == 1) {
      //-- EJECUTO LA CONSULTA DE ELIMINACIÓN PARA EL ARCHIVO $row['ID']
      $delete = "DELETE FROM filesX WHERE ID=' . $row['ID'] . '";
      //-- ELIMINADO
      if (mysql_query($delete)) { echo 'Archivo ' . $row['nombres'] . ' eliminado...'; }
      //-- SE PRODUJO UN ERROR
      else { echo 'Error al intentar eliminar el archivo ' . $row['nombres'] . '. MySql dijo: ' . mysql_error(); }
    }
    else {
      //-- ¿MENSAJE PARA LOS "NO BORRABLES"? :P
    }
  }
}
else { echo 'No hay archivos...'; }
?>



Esto, recupero todos los registros de la tabla filesX y luego hace el while verificando los borrables y los no, luego los borra.
Sino es esto lo que queires, no entendí entonces que es lo que necesitas.

Saludos!

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 27 Abr 2008 06:23 pm
[quote=\"Necrophasto\"]A ver si entiendo, tienes 10 registros, 6 con \"0\" (no borrabless) y 4 con \"1\" (borrables). Entonces quieres que al ejecutar un $delete, te elimine los \"borrables\" (1).

Puede ser algo así

Código :


<?
//-- OBTENGO LA CANTIDAD DE RESULTADOS
$check = mysql_query(\"SELECT * FROM filesX\");
$resultados = 0;

//--  SI TENGO MÁS DE 1 REGISTRO, COMIENZO LA ELIMINACIÓN
if ($resultados > 0) {
  while ($row = mysql_fetch_array($check)) {

    //-- SI EL REGISTRO TIENE LA PROPIEDAD BORRAR=1, ELIMINO
    if ($row[\'borrar\'] == 1) {
      //-- EJECUTO LA CONSULTA DE ELIMINACIÓN PARA EL ARCHIVO $row[\'ID\']
      $delete = \"DELETE FROM filesX WHERE ID=\' . $row[\'ID\'] . \'\";
      //-- ELIMINADO
      if (mysql_query($delete)) { echo \'Archivo \' . $row[\'nombres\'] . \' eliminado...\'; }
      //-- SE PRODUJO UN ERROR
      else { echo \'Error al intentar eliminar el archivo \' . $row[\'nombres\'] . \'. MySql dijo: \' . mysql_error(); }
    }
    else {
      //-- ¿MENSAJE PARA LOS \"NO BORRABLES\"? :P
    }
  }
}
else { echo \'No hay archivos...\'; }
?>



Esto, recupero todos los registros de la tabla filesX y luego hace el while verificando los borrables y los no, luego los borra.
Sino es esto lo que queires, no entendí entonces que es lo que necesitas.

Saludos![/quote]

UPS! Fijate que en donde puse:

//-- OBTENGO LA CANTIDAD DE RESULTADOS
$check = mysql_query(\"SELECT * FROM filesX\");
$resultados = 0;

la variable $resultados, tiene que tener el siguiente valor

//-- OBTENGO LA CANTIDAD DE RESULTADOS
$check = mysql_query(\"SELECT * FROM filesX\");
$resultados = mysql_num_rows();

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 30 Abr 2008 04:54 pm
graxias por tu respuesta Necrophasto pero no loo kiero hacer del lado de php sino de mysql.. osea un triggers...!

Por jripper

228 de clabLevel

2 tutoriales

Genero:Masculino  

msie7
Citar            
MensajeEscrito el 30 Abr 2008 05:55 pm


Entonces quiero hacer un trigger que haga lo siguiente....



Tienes razón... no lo he leido bien.

Si encuentro como hacerlo desde PHP, responderé. Solo trabajo con MySql desde este lenguaje... por lo que no te tengo una respuesta.

Espermos y ya veremos que nos responden.-

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.