Podríamos evitar el trigger modificando el campo updated_at de la siguiente forma:
ALTER TABLE `lines`
CHANGE COLUMN `updated_at` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `created_at`;
Introducción
¿Cuál es la diferencia entre MySQL y MariaDB?
Proyecto del curso: metro de CDMX
Diagramas Entidad Relación
Diagramas conceptuales vs. diagramas físicos
Diagrama conceptual: estableciendo relaciones
Diagrama físico: detalles en las tablas
Reto: relaciones en el diagrama físico
Instalando nuestras herramientas
Instalación de MariaDB en Windows
Instalación de MariaDB en Linux
Instalación de MariaDB en macOS
Sentencias básicas
Archivos SQL: CREATE DATABASE
Manejo de usuarios para la base de datos
CREATE TABLE
Modificando tablas con ALTER TABLE
Playground: Manejo de Tablas con SQL
Insertando información en la base de datos
Actualizando información: UPDATE
Borrando datos: DELETE
Playground: INSERT, UPDATE y DELETE en SQL
Listando datos: SELECT
Playground: Metro de CDMX en SQL
Consultas anidadas
¿Qué son las consultas anidadas?
Creando nuestra primer consulta anidada
Playground: Metro de Bogotá en SQL
Geolocalización
¿Cómo funciona la geolocalización?
Creando nuestras consultas de geolocalización
Reto: geolocalización con consultas anidadas
Stored Procedures
¿Qué son los Stored Procedures?
Crea tus primeras Stored Procedures
Prepared statements
Triggers
¿Qué son los triggers?
Crea tus primeros triggers
Triggers compuestos
Bonus
Confesión personal: phpMyAdmin es superior
Próximos pasos
Cómo seguir aprendiendo SQL
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
RetaxMaster
Aportes 11
Preguntas 0
Podríamos evitar el trigger modificando el campo updated_at de la siguiente forma:
ALTER TABLE `lines`
CHANGE COLUMN `updated_at` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `created_at`;
donde estás JuanDC ? D:
Mi solucion al segundo Reto 😀
ALTER TABLE `lines`
MODIFY `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
Se puede usar el statement IF NOT EXISTS
luego de la palabra TRIGGER
para prevenir errores al ejecutar una y otra vez el mismo archivo cuando un Trigger ya existe previamente.
Acá la solución para el resto de tablas:
USE metro_cdmx;
CREATE TRIGGER IF NOT EXISTS update_updated_at_field_lines
BEFORE UPDATE ON `lines`
FOR EACH ROW
SET NEW.updated_at = NOW();
CREATE TRIGGER IF NOT EXISTS update_updated_at_field_lines_stations
BEFORE UPDATE ON `lines_stations`
FOR EACH ROW
SET NEW.updated_at = NOW();
CREATE TRIGGER IF NOT EXISTS update_updated_at_field_locations
BEFORE UPDATE ON `locations`
FOR EACH ROW
SET NEW.updated_at = NOW();
CREATE TRIGGER IF NOT EXISTS update_updated_at_field_stations
BEFORE UPDATE ON `stations`
FOR EACH ROW
SET NEW.updated_at = NOW();
CREATE TRIGGER IF NOT EXISTS update_updated_at_field_trains
BEFORE UPDATE ON `trains`
FOR EACH ROW
SET NEW.updated_at = NOW();
para no utilizar los triggers realicé:
ALTER TABLE `stations`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `lines`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `trains`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
Solución para el segundo reto:
USE metro_cdmx;
CREATE TRIGGER update_updated_at_field
BEFORE UPDATE
ON `lines`
FOR EACH ROW
SET NEW.updated_at = NOW();
--trigger for `stations`
USE metro_cdmx;
CREATE TRIGGER update_updated_at_field_stations
BEFORE UPDATE
ON `stations`
FOR EACH ROW
SET NEW.updated_at = NOW();
-- trigger for `trains`
USE metro_cdmx;
CREATE TRIGGER update_updated_at_field_trains
BEFORE UPDATE
ON `trains`
FOR EACH ROW
SET NEW.updated_at = NOW();
--trigger for `lines_stations`
USE metro_cdmx;
CREATE TRIGGER update_updated_at_field_lines_stations
BEFORE UPDATE
ON `lines_stations`
FOR EACH ROW
SET NEW.updated_at = NOW();
-- Note I haven't update the last triggers into the DB `stations`, `lines_stations` & `trains`
Despues de creadas las tablas hice esta modificacion y me ha funcionado:
ALTER TABLE `stations`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `lines`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `trains`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `lines_stations`
MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
USE metro_cdmx;
CREATE TRIGGER Supdate_updated_at_field
BEFORE UPDATE
ON `lines`
FOR EACH ROW
SET NEW.updated_at=NOW()
CREATE TRIGGER update_updated_at_field
BEFORE UPDATE
ON `lines_stations`
FOR EACH ROW
SET NEW.updated_at=NOW();
CREATE TRIGGER update_updated_at_field
BEFORE UPDATE
ON `lacations`
FOR EACH ROW
SET NEW.updated_at=NOW();
CREATE TRIGGER update_updated_at_field
BEFORE UPDATE
ON `stations`
FOR EACH ROW
SET NEW.updated_at=NOW();
CREATE TRIGGER update_updated_at_field
BEFORE UPDATE
ON `trains`
FOR EACH ROW
SET NEW.updated_at=NOW();
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?