los tan conocidos sp o store procedure! pues si ya existen hace mucho!! bueno en realidad desde la version 5.0 y muchas otras cosas mas. aqui los detalles

Una introducción a las nuevas características

Con la versión 5 de su motor de base de datos, MySQL da un salto comparable (o mayor) a la incorporación de almacenamiento ACID con InnoDB. Básicamente, esta última versión incorpora 4 novedades: Stored procedures, Triggers, Views y Data Dictionary (o Information Schema). De las otras 2 nuevas características (Cursores y matemática de precisión) me ocuparé más adelante.

Aunque cada una merece un espacio propio (y lo va a tener), acá va una pequeña introducción general, que no sólo se aplica a MySQL sino también a otros motores.

Empecemos con los Stored Procedures (o SPs). Un SP es un procedimiento (una rutina escrita en un lenguaje en particular) almacenado en una base de datos. Tiene un nombre, una lista de parámetros (que puede ser vacía) y un cuerpo (las sentencias que se ejecutarán al invocarlo) Se suele distinguir entre una función, que devuelve un valor como resultado de su ejecución y un procedimiento, que puede no devolver ningún valor, o puede devolver varios a través de sus parámetros. Además, una función tiene varias limitaciones que un SP no tiene. MySQL permite crear ambos tipos de rutina.

Un Trigger es una rutina también almacenada en la base de datos, asociada a una sentencia SQL de modificación de datos (INSERT, UPDATE o DELETE) Por ejemplo, se puede crear un trigger asociado a la sentencia DELETE en una tabla de clientes, para impedir que se elimine uno que tenga un saldo distinto de cero. El cuerpo del trigger puede ejecutarse una única vez como resultado de la ejecución de la sentencia, o una vez por cada registro afectado. Esto quiere decir que, en el caso de los clientes, el trigger debería ejecutarse por cada cliente que cumple la condición del WHERE.

Una View (Vista) es básicamente un SELECT almacenado. El motor distingue dos tipos de tablas, "base" y "derivadas" Una tabla base es una existente en el motor de almacenamiento. Una derivada es la que surge de cualquier combinación de tablas base, literales y/o funciones. Desde este punto de vista, un SELECT produce una tabla derivada. Así, una Vista es un nombre asociado a la tabla derivada que surge de un SELECT. Puesto de esta forma, parece bastante simple pero, de hecho, hay bastante para hablar sobre vistas. Por ejemplo, se pueden crear vistas "actualizables", o sea, vistas que soporten INSERTs y UPDATEs modificando la tabla base.

El Data Dictionary es la forma de acceder a los metadatos de la base (la información sobre los campos de una tabla es un metadato, por ejemplo) Antes de la versión 5, MySQL permitía acceder a los metadatos a través de SHOW, por ejemplo, "SHOW TABLES". Este mecanismo de acceso tiene como desventaja principal ser una desviación del estándar SQL, que presenta esta información de una forma más natural para el usuario de un motor SQL, esto es, a través de tablas. La nueva implementación pone el diccionario en la base de datos INFORMATION_SCHEMA (aunque las sentencias SHOW siguen siendo soportadas) Esta base es creada por el motor cada vez que arranca, y es mantenida a medida que ocurren cambios en las estructuras de la base. No se puede modificar su contenido directamente. Entre otras tablas, se puede encontrar "TABLES" que (obviamente) lista las tablas y vistas que existen en el motor.

Espero haber generado una chispa de curiosidad. Si ya utilizaron MySQL, es muy probable que en algún momento hayan lamentado que no tuviera alguna de las herramientas que ahora está presentando. En particular, me hubiera gustado mover ciertos checkeos que tuve que dejar en la aplicación a triggers, como forma de proteger la base "desde adentro"

visiten estas paginas de donde obtendran mas informacion en detalle sobre esto

http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
http://www.mysql-hispano.org/page.php?id=36
http://mysql5.linux10.com.ar/
sobre procedimientos almacenados
http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html

Siguiendo con openvpn, un consejo sobre esto, al menos en debian woody , es en realidad sencillo

#>apt-get install openvpn

luego de tu configuracion procedes ah crear el disp.

#> modprobe tun
#> mkdir /var/empty
#> chown nobody.nogroup /var/empty
#> /etc/init.d/openvpn restart

ahora bien que pasa si tienes varias conexiones a un solo servidor? entonces necesitaras tun0 tun1 tun2, como recomendacion les daria no crear el dispositivo manualmente, sino solo el openvpn lo crea y siempre apuntar solamente a el

ejm : para el primero ponen
dev tun0
luego para el 2do enlace
dev tun1
y listo.

solo como consejo.

ahora para el que quiere crearlo manualmente:

#> modprobe tun

Renombramos tun por tun1:
#> mv /dev/net/tun /dev/net/tun1

Creamos uno nuevo para la siguiente conexion:
#> mknod /dev/net/tun2 c 10 200


La configuracion de openvpn es muy sencilla realmente, pero cuando fuciona detras de un proxy suele traer ciertos problemas!
las reglas que se ponen en iptables deben tener mucho cuidado se deben fijar en no cerrar todos los puertos y denegar forward.
estas son las reglas que se necesitan para habilitar el puerto 5000 o 5001 sucesivamente para openvpn.

fijarse bien que aqui se permite forward para una red 192.168.1.x quiere decir que al otro lado se dara acceso ah la red origen digamos 192.168.2.x y el forward debe activarse en eth1 tambien, ya que si se tiene 2 tarjetas de red una apuntando ah tu salida a internet eth0 (o ip publico) y la otra a tu red local eth1.

_______________________desde aqui______________________
iptables -A FORWARD -i eth0 -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.1.0/255.255.255.0 -j ACCEPT
# Aceptamos el tráfico entrante UDP por el puerto del OpenVPN sobre el interfaz real (eth0, eth1).
# 2 puertos, el 5000:
iptables -A INPUT -i eth0 -p udp --dport 5000 -j ACCEPT
# Aceptamos también la salida por dicho puerto:
iptables -A OUTPUT -o eth0 -p udp --sport 5000 -j ACCEPT
# Permitimos conectar desde cualquier equipo de las redes a nuestro router por la VPN:
iptables -A INPUT -i tun+ -j ACCEPT
# Permitimos conectar por la VPN desde el router al resto de routers y equipos de cada red:
iptables -A OUTPUT -o tun+ -j ACCEPT
# Permitimos que equipos de las otras redes accedan a nuestra red:
iptables -A FORWARD -i tun+ -j ACCEPT
# Permitimos que los equipos de nuestra red accedan a la VPN:
iptables -A FORWARD -o tun+ -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
#iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

_______________________hasta aqui______________________