Управление версиями строк для MySql
Есть ли встроенный механизм контроля версий строк для MySQL? Нечто подобное столбцу timestamp в MS SqlServer.
2 ответа
Если вы добавите поле "timestamp", оно будет обновляться автоматически всякий раз, когда вы обновляете строку - хотя и не совсем с версионированием, но звучит так, как будто это то, что вам нужно.
Mysql не имеет встроенного механизма преобразования строк. Хотя использование типа отметки времени может показаться нормальным, вы не справитесь с этим для запросов, которые обновляют несколько строк одновременно и занимают больше времени, чем разрешение отметки времени, поскольку назначенное значение основано на начале изменения, а не на конце изменение.
Таким образом, если ваш запрос на обновление затрагивает 100 строк, все строки будут иметь одинаковую метку времени (скажем, значение 2015-10-28 09:47:10.123456). Но возможно, что строки не будут закончены записывать до 2015-10-28 09:47:10.654321.
Если отдельно вы ищете все измененные строки на основе какой-либо другой метки времени (скажем, 2015-10-28 09:47:10.500000), вы не получите желаемых результатов. И в зависимости от вашего кода, вы можете пропустить 100 измененных строк.
Это факт, что изменения в строках теперь могут иметь временную метку в прошлом, что вы не можете просто сравнить 2 временных метки, чтобы получить все измененные строки.