Espero que esto te acerque un poco más a la respuesta que estás buscando. Needed Necesitaba crear y actualizar marcas de tiempo usando Entity Framework 6 y MySQL’s Connector / Net 6.9.9, luego necesitaba agregar precisión de microsegundos.
Primero, un tipo de columna de marca de tiempo básica con restricciones funciona bien, por ejemplo, dentro de la definición de su tabla:
…
create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP EN ACTUALIZAR ACTUAL TIMESTAMP,
…
Esto se comporta como cabría esperar, y la adición de registros a la tabla a través del sistema de modelo de datos de ADO.Net provocaría que ambos se marcaran con la hora actual, y las actualizaciones provocarían que update_ts se actualizaran. Sin embargo, el tipo de columna TIMESTAMP de MySQL (y el tipo DATETIME) solo tiene una segunda granularidad completa. Desde MySQL versión 5.4, sin embargo, puede especificar una presición siguiendo el tipo y las constantes como este:
- Actualmente estoy usando el idioma único de Windows 8.1. Quiero usar Ubuntu también. ¿Qué tengo que hacer?
- Si no tengo tratamiento acústico, ¿hay otros artículos para el hogar que absorban el sonido, como los colchones?
- No tengo un MBA. Soy ingeniero en TCS. ¿Qué necesito mejorar para convertirme en consultor de gestión?
- ¿Mi miopía severa se debe al síndrome de Marfan?
- Cuando me gradúe, planeo convertirme en conductor de Lyft y Uber. ¿Es este un trabajo factible para vivir solo?
…
– ¡¡¡ADVERTENCIA!!! ¡¡¡NO FUNCIONA!!!
create_ts TIMESTAMP (6) DEFAULT CURRENT_TIMESTAMP (6),
update_ts TIMESTAMP (6) DEFAULT CURRENT_TIMESTAMP (6) EN ACTUALIZAR ACTUAL TIMESTAMP (6),
…
Lamentablemente, esto no funcionó como se esperaba, probablemente debido a un error de MySQL Connector / Net. Después de mucho ensayo y error, finalmente resolví las columnas DATETIME sin restricciones y disparadores para obtener el efecto deseado:
…
create_ts datetime (6),
update_ts datetime (6),
…
cree el activador test_table_insert antes de insertar en test_table
para cada fila, establezca new.create_ts = now (6), new.update_ts = now (6);
crear disparador test_table_update antes de actualizar en test_table
para cada fila, establezca new.update_ts = now (6);
…
Usé DATETIME en lugar de TIMESTAMP porque MySQL y / o EF parecían marcar la hora automáticamente, incluso sin restricciones, e interferían con los disparadores. Pronto abriré un informe de error en el sitio de MySQL, pero por ahora tengo una solución alternativa.