El equipo de Dojo ha liberado la version 1.1 de su framework de desarrollo, el cual viene con unas 800 mejoras, entre las que se incluye soporte para Adobe AIR y Jaxer y mejoras en el performance entre otras… Este framework me parece muy intersante , próximamente hablare de él y de otros como JQuery…
Autor : david           No hay Comentarios

Silk icons es un set con unos 700 iconos de 16×16 pixels, de gran calidad y que contiene una gran variedad de iconos en el cual podrás encontrar alguno adecuado para tus necesidades. Se usa en muchos diseños…
Ver Previsualización       Descargar

Autor : david           No hay Comentarios

Cómo crear triggers en MySQL 5

BBDD

27 de Marzo del 2008

Otra de las nuevas características incluidas en MySQL, además de los procedimientos almacenados, son los triggers, que traducido sería algo así como disparadores, son oyentes, que se mantienen a la escucha de los eventos que puedan producirse en una tabla (insert , update y delete) y ejecutan un código antes (before) o después (after) de que se produzca este evento.

Con los triggers podemos hacer cosas tan interesantes como mantener un log de que usuarios hace modificaciones en una tabla, que usuarios borran registros, o insertan, o lo que se te ocurra.

Para referenciar las columnas de antes y después de que el vento se haya disparado, se usan las palabras clave OLD y NEW. Con la sentencia insert solo se permite NEW, con update se permiten ambas y con delete solo OLD.

Sintaxis necesaria para crear un trigger

  1. CREATE TRIGGER <nombre>
  2.     {BEFORE|AFTER}
  3.     {INSERT|UPDATE|DELETE}
  4.     ON
  5. <tablename>
  6.     FOR EACH ROW
  7.     BEGIN
  8.     <sentenciasSQL>
  9.     END;
  10.  

Para poner nombre a los triggers es conveniente seguir una convención que hará más fácil identificar sobre que evento y tabla actúa el trigger. Esta sería una buena forma de nombrar nuestros triggers:

NombreTabla + “_” + abreviatura_tipo_tigger

Por lo tanto para nombrar un triger que se ejecuta sobre la tabla T1 después de un update lo haríamos de la siguiente forma si seguimos esta convención:

“T1_BU”

Esto puede ser útil, pero no es necesario, puedes poner el nombre que quieras a tu trigger.

Para crear triggers en una tabla es necesario hacerlo desde un usuario con permisos para ello. Para dar permiso a un usuario en una tabla para crear un trigger lo haríamos de la siguiente forma:

  1. GRANT CREATE TRIGGER ON nombreTabla TO Usuario
  2.  

Vamos a ver un ejemplo sencillo:

Creamos la tabla miTabla

  1. CREATE TABLE miTabla( id int , nombre varchar(50) );
  2.  

Y después creamos un trigger que va a crear una variable global con el nombre antiguo antes de ejecutar el update y otra con el nombre nuevo que habrá después de ejecutar el update.

  1. delimiter //
  2. CREATE TRIGGER miTabla_bu before UPDATE
  3. ON miTabla
  4. FOR each row
  5. begin
  6.     SET @nombreViejo = OLD.nombre;
  7.     SET @nombreNuevo = NEW.nombre;
  8. end//
  9.  

Vamos a ver otro tigger :

  1. CREATE TRIGGER miTabla_bi
  2. before INSERT ON miTabla
  3. FOR each row
  4. begin
  5.     SET @x = ‘Trigger activado’;
  6.     SET NEW.nombre = ‘Valor introducido desde el TRIGGER’;
  7. end//
  8.  

En esta ocasión, cada vez que se haga un insert sobre la tabla miTabla, se creará una variable global con el valor ‘Trigger activado’ y modificará el valor que se insertará en la columna nombre, por lo que siempre se insertará el valor ‘Valor introducido desde el trigger’.

Si lo que queremos es mantener el control de una tabla para ver quien la modifica y a que hora, podemos crear una tabla donde iremos anotando quien hace cada modificación y anotar los cambios.

Creamos la tabla auxiliar

  1. CREATE TABLE controlMiTabla
  2. (
  3.    id int NOT NULL AUTO_INCREMENT,
  4.    id_registro int,
  5.    anterior_nombre varchar(50),
  6.    nuevo_nombre varchar(50),
  7.    usuario varchar(40),
  8.    modificado datetime,
  9.    PRIMARY KEY(id)
  10. ) ENGINE = InnoDB;
  11.  

Y ahora vamos a crear un trigger que se encargue de llevar un log de quien actualiza la tabla, que valores modifica y a que hora:

  1. delimiter //
  2. CREATE TRIGGER MiTabla_BU after UPDATE ON miTabla
  3.    FOR each row
  4.     begin
  5.          INSERT INTO controlMiTabla (id_registro, anterior_nombre , nuevo_nombre, usuario  , modificado ) VALUES(OLD.id , OLD.nombre , NEW.nombre, CURRENT_USER(), NOW() );
  6.     end//
  7.  

Y ya tenemos nuestro trigger creado, con el cual llevaremos el control de la tabla.

Esto es recomendable hacerlo solo en las tablas de importancia critica, ya que si no nuestra base de datos crecerá de forma innecesaria.


Dreamhost lo ha vuelto a hacer, el sitio ha estado caído desde las 6:00 de la mañana hasta las 12:00 del mediodía (hora española), el tema ya me esta empezando a cansar…

Autor : david           No hay Comentarios

Dar estilo a comandos de Windows con Css

Css

26 de Marzo del 2008

Después de un periodo de descanso en semana santa, necesario para desconectar un poco y otro periodo de descanso forzoso debido al mal funcionamiento del hosting de Dreamhost, proseguimos con el blog, el cual había dejado un poco abandonado.

Escribiendo el articulo de MySQL se me ocurrió dar un estilo a los comandos que vaya insertando, creando un div que simule una consola de Microsoft, el típico CMD.

En un principio iba a usar una imagen capturada de la consola directamente, pero esta solución no me acababa de convencer, ya que no se podria copiar y pegar texto y ademas para Google, el texto de las imagenes es como si no existiese.

Realmente es una tontería, se me ocurrió una tarde que estaba aburrido y decidí escribir un articulo sobre esto.

La idea es usar un div con un pre dentro para introducir el texto preformateado.

Estas son las normas css que he usado :

  1.  
  2. .cmdWin {
  3. background:url(images/cabecera.png) 2px 2px;
  4. #background-position: 5px 5px; /* Solo para IE */
  5. background-repeat: no-repeat;
  6. background-color:#08246B;
  7. color:#EFEFEF;
  8. padding:0px;
  9. padding-top:7px;
  10. #padding-top:19px;  /* Solo para IE */
  11. border: 4px #CFCFCF ridge;
  12. }
  13. .cmdWin pre , code{
  14. font:monospace, Andale Mono, Lucida Console, Monaco, fixed ;
  15. font-weight:bold;
  16. background:black;
  17. margin-bottom:0px;
  18. padding:1px;
  19. overflow:scroll;
  20. height:400px;
  21. }
  22. .cmdWin pre span.cursor {
  23. text-decoration:blink;
  24. }
  25.  

He usado un hack css , usando el carácter #, dado que Internet explorar y firefox interpretan el padding de forma distinta.

Para la cabecera del div he usado esta imagen:

También he creado una clase con nombre cursor para hacer parpadear el cursor.

Este el código html necesario para mostrar la línea de comandos.

<div class=“cmdWin”>
<pre>
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\felisa><span class=“cursor”>_</span>
</pre>
</div>

Y este es el resultado:

Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\felisa>_

Como ves, no es algo necesario, pero sirve para romper con la monotonía de la página a la hora de escribir código.


blank
[x] Cerrar
E-mail