04/04/2010, 16:40
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes Puntos: 2658 | |
Respuesta: Trigger sobre un delete y hacer insert 1) INSTEAD OF... no existe en MySQL. Son alternativas de otros DBMS, como Oracle, SQL Server, etc.
2) Las variables locales de un procedimiento (TRIGGER o no), se declaran, pero no se usa "@" para definirlas. Simplemente se ponen sus nombres. El uso de "@" está reservado a variables de usuario, las cuales no se declaran sino que se inicializan (se asigna un valor), y son permanentes dentro y fuera del script mientras dura la sesión del usuario. Esto último hace que si se han usado antes, conserven su último valor, lo que puede dar lugar a errores.
3) Los bloques BEGIN/END no son anidables, sino que pueden ser consecutivos. Un anidamiento genera un error.
4) RAISERROR no existe en MySQL. Para gestionar errores se deben declarar HANDLERs, y tampoco se puede usar una sentencia que genere una salida de interfase, porque las mismas tampoco existen en MySQL.
Debes tener en cuenta que el lenguaje de programación de scripts y procedures no está estandarizado, por lo que es muy difícil realizar migraciones directas. Además, cada DBMS le pone sus propias extensiones al SQL, que solamente son útiles en el contexto de ese DBMS.
Antes de ponerte a copiar scripts de uno a otro DBMS lo que te conviene es primero leer el manual de referencia de ese DBMS y fijarte que es lo que realmente puede hacer y qué sentencias y cláusulas realmente existen.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |