Duda con Trigger, Sleep y
Publicado por Comanderblack (1 intervención) el 19/11/2013 21:16:41
Hola. Ante todo quiero decir, que aunque me han enseñado bastante de bases de datos, no me han llegado a enseñar nada (o casi nada) de triggers.
Lo que quiero hacer es que una entrada que se produce en la siguiente tabla:
tenga un sistema de eliminación de entradas reservadas si pasado un tiempo no han sido compradas.
(Es decir, que la entrada introducida, si no ha sido actualizada a 'comprada', sea borrada)
Creo que lo ideal sería un trigger "retardado", que creo que quedaría algo tal que así:
Se que este código está mal, pero es una forma de exponer lo que intento hacer.
Cualquier idea para solucionar esto, o alguna alternativa eficaz, es bienvenida.
Lo que quiero hacer es que una entrada que se produce en la siguiente tabla:
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE asientos (
sesion INTEGER NOT NULL,
zona INTEGER NOT NULL,
fila INTEGER NOT NULL,
columna INTEGER NOT NULL,
estado ENUM('reservado', 'comprado') NOT NULL,
hora DATETIME NOT NULL,
PRIMARY KEY (sesion, fila, columna),
FOREIGN KEY (sesion) REFERENCES sesion (ID) ON DELETE CASCADE,
FOREIGN KEY (zona) REFERENCES salaSpec (zona) ON DELETE CASCADE
);
(Es decir, que la entrada introducida, si no ha sido actualizada a 'comprada', sea borrada)
Creo que lo ideal sería un trigger "retardado", que creo que quedaría algo tal que así:
1
2
3
4
5
6
7
8
CREATE TRIGGER borrarasientos AFTER INSERT ON asientos
FOR a=EACH ROW
BEGIN
SLEEP(300)
IF (a.estado='reservado') THEN
DELETE a;
END IF
END
Cualquier idea para solucionar esto, o alguna alternativa eficaz, es bienvenida.
Valora esta pregunta


0