mysql - trigger - ¿Puedo hacer un simple disparador?
triggers mysql ejemplos pdf (0)
Si creo un disparador antes de insertar / actualizar, sé cómo hacer algo como esto.
CREATE TRIGGER upd_check BEFORE INSERT ON def_servpath_0001_weatherstation
FOR EACH ROW
BEGIN
DECLARE someString text;
FOR EACH ROW
BEGIN
IF NEW.atrType = ''datetime'' THEN
SET someString := NEW.atrValue;
END IF;
END;
FOR EACH ROW
BEGIN
IF NEW.atrType <> ''datetime'' THEN
SET NEW.atrMD = someString;
END IF;
END;
END;//
Mi pregunta es, ¿puedo hacer algo simple como:
DECLARE someString varchar(100);
SET someString = (SELECT NEW.atrValue FROM **NEW** WHERE NEW.atrType = ''datetime'');
UPDATE **NEW**
SET NEW.atrValue = someString;
EDITAR
Mejor dividido en dos partes.
- ¿Puedo obtener el valor de campo de una nueva fila? ¿O debería hacer un ciclo para todas las filas?
- ¿Puedo actualizar todas las filas a la vez? o ¿Debería hacer un ciclo para todas las filas y actualizar cada una?
MUESTRA DE CÓDIGO
CREATE TABLE [test] ( atrType nvarchar(100), atrValue nvarchar(100), atrMD nvarchar(100));
INSERT INTO [test] VALUES
(''datetime'', ''20150915'', ''''),
(''name'', ''Juan'', ''''),
(''city'', ''Caracas'', '''');
** Trigger**
SELECT *
FROM [test]
atrType atrValue atrMD
datetime 20150915 20150915
name Juan 20150915
city Caracas 20150915