Daniel Gonzalez
Algo que me ha ayudado muchisimo para los errores es poner el codigo en MySql y literalmente te dice que estaba mal por que aveces me faltaba una coma y si eran largos era dificil con la terminal, me ayudo espero a alguien le sirva
Daniel Gonzalez
Algo que me ha ayudado muchisimo para los errores es poner el codigo en MySql y literalmente te dice que estaba mal por que aveces me faltaba una coma y si eran largos era dificil con la terminal, me ayudo espero a alguien le sirva
Gilbert Ardila
Gracias a Angie por el aporte!!
Daniela Stornelli
12:48 en la tabla "active_drivers" no falta la referencia a la foreign key que corresponde a driver_id ?
Liliana Londono Agudelo
Lo mismo pienso yo, según el diagrama faltaría la llave foránea.
Danny Zavid Herrera Hitas
Sí, siempre es importante incluir la declaración de las llaves foráneas en las entidades que se relacionan entre sí, de lo contrario se incurre en la mala práctica de perder la integridad referencial especialmente cuando se borran o actualizan registros de una tabla. https://es.stackoverflow.com/questions/372438/qu%C3%A9-ventajas-tiene-vincular-tablas-con-claves-for%C3%A1neas-a-no-hacerlo
Rodrigo Angel Zucchini
Si no se usa FK se puede hacer igual?
Danny Zavid Herrera Hitas
Sí, de hecho en el código SQL de la creación de la tabla “active_drivers” no se define una llave foránea como tal, es decir, no se ve la declaración "constraint — foreign key – " Sin embargo, cuando vas a borrar un elemento de la tabla “active_drivers” necesitas saber cómo referenciar a ese elemento en particular; esa referencia se obtiene inequivocamente al emplear el identificador primario de la tabla “drivers”.
Keren Pingo Mezones
Si se eliminará la columna de la tabla "active_drivers" cada vez que se cambie el estado a 0, entonces porque también se ha creado la columna "updated_at"? Con created_at no sería suficiente?
Keren Pingo Mezones
¿ En qué afecta que yo ponga AFTER o BEFORE?
Daniel Mamani
que tendría que aumentar al código si es que quiero se guarde el nombre del conductor mas?
Pedro Ovalles
tendrías que modificar la tabla active_drivers y agregarle una columna para nombres, y luego en el trigger al momento del insert agregas el NEW apuntando a dicha columna, pero realmente no es necesario hacer eso, ya que con inner join puedes hacer una consulta que te muestre esa información y así te ahorras de tener 2 tablas con 1 columna para los nombres.
Daniela Stornelli
Escribi mi consulta en varios comentarios porque no me los corta 🙄
Daniela Stornelli
DELETE FROM active_drivers WHERE driver_id = NEW.id;
END IF;
END; //
DELIMITTER ;
Daniela Stornelli
BEGIN
IF NEW.status = 1 THEN INSERT INTO `active_drivers` (driver_id) VALUES (NEW.id); ELSE DELETE FROM `active_drivers` WHERE driver_id = NEW.id; END IF;
END; //
DELIMITTER ;
Daniela Stornelli
DELIMITTER //
CREATE TRIGGER update_active_drivers
AFTER UPDATE
ON drivers
FOR EACH ROW
BEGIN
IF NEW.status = 1 THEN INSERT INTO `active_drivers` (driver_id) VALUES (NEW.id); ELSE DELETE FROM `active_drivers` WHERE driver_id = NEW.id; END IF;
END; //
DELIMITTER ;
Daniela Stornelli
Me indica que tengo un error "near END at line 1" pero creo que lo escribí exactamente igual que el profesor...
DELIMITTER //
CREATE TRIGGER update_active_drivers
AFTER UPDATE
ON drivers
FOR EACH ROW
BEGIN
IF NEW.status = 1 THEN INSERT INTO `active_drivers` (driver_id) VALUES (NEW.id); ELSE DELETE FROM `active_drivers` WHERE driver_id = NEW.id; END IF;
END; //
DELIMITTER ;
Ivan Martinez
DELIMITER
Con una sola "T"
Donovan RM
y que pas'o con la Foreing Key?
Ronald Ochoa Cruz
A estas altura del curso ya empieza a imaginar uno casos de uso, realmente los triggers parecen ser muy importantes en el funcionamiento de nuestros programas
Mario Alexander Vargas Celis
USE metro_cdmx; DELIMITER // CREATE TRIGGER update_active_drivers AFTER UPDATE ON `drivers` FOR EACH ROW BEGIN IF NEW.status = 1 THEN INSERT INTO `active_drivers` (driver_id) VALUES (NEW.id); ELSE DELETE FROM `active_drivers` WHERE driver_id = NEW.id; END IF; END; // DELIMITER ;