Cita:
Iniciado por gnzsoloyo Me refiero que si tienes un TRIGGER definido, por ejemplo, para un INSERT en la tabla A, el código de ese trigger no puede realizar INSERT, DELETE, UPDATE, ALTER o DROP sobre la misma tabla A, porque en ese momento está bloqueada.
Tampoco puede hacer una operación de clase DML (INSERT, DELETE; UPDATE) sobre una tabla B si la tabla B tiene a su vez un TRIGGER que realice una operación DML sobre la tabla A (nested process).
Lo que si puedes hacer es crear otras tablas (temporales o no) o realizar operaciones sobre los valores del nuevo registro (INSERT) o del viejo (UPDATE).
Finalmente: No se pueden crear variables de tipo TABLE porque en MySQL no existe ese tipo de dato. Existen las tablas TEMPORARY y MEMORY, que cumplen funciones parecidas.
Tampoco se puede cancelar un INSERT/ UPDATE/ DELETE en proceso desde su TRIGGER.
Como dije: Hay cosas que son incompatibles entre diferentes BDMS. Por eso las migraciones son tan complejas.
a ver, en SQL Server se llama instead of insert porque no llega a realizarse la insercion, no existe el before insert como tal en MySQL, en MySQL, te digo desde ya que yo he hecho ya varios asi y no dan ningun problema, quicir, usando el before of insert, esto es, dentro del cuerpo del trigger podemos controlar que datos se meten , finalmente los datos que van a ser un nuevo registro de la tabla seran datos procesados previamente en una tabla temporal como te digo, a lo mejor hablo de forma muy abstracta pero de un modo estilo procesado de new.loquesea + datos de la tabla temporal.
No se si me he explicado bien pero creeme, funciona y sin problemas.
No me referia a hacer un insert sobre la tabla en si, es mas bien, controlar lo nuevo, ya se que iria contra la definicion de trigger.