Мне нужно отслеживать изменения, созданные в каталоге, а также сохранить историю.У меня есть функция, которая сканирует файлы в этом каталоге, а затем вставляет их в таблицу.скажем, что в первый раз эта программа была запущена там, где файлы A и B. В результате таблица должна выглядеть следующим образом:
FileID File DateModified
1 A 101010
2 B 020202
Допустим, пользователь изменяет файл B, поэтому при следующем запуске программытаблица должна выглядеть следующим образом:
FileID File DateModified
1 A 101010
2 B 020202
3 A 101010
4 B 030303
Из таблицы выше мы знаем, что файл B был изменен, поскольку у него другая дата изменения, а также что файл A не был изменен.Более того, моя программа знает, что записи, которые были вставлены, - это все записи с fileID больше 2. Как я могу выполнить выборку, которая вернет последний файл B, потому что этот файл был изменен.Я хочу знать, какие файлы были изменены, как я могу построить этот запрос.
Пожалуйста, сначала прочтите выше, чтобы понять эту часть.Вот еще один пример.
First time program runs:
FileID File DateModified
1 X 101010
2 Y 020202
Next time program runs:
FileID File DateModified
1 X 101010
2 Y 020202
3 Y 020202
4 A 010101
до сих пор мы знаем, что файл X был удален, потому что он не включен в новое сканирование.Кроме того, мы знаем, что файл A был создан.И, наконец, тот файл Y не был изменен, это то же самое.Я хотел бы выполнить выбор, где я могу просто получить файлы, которые были созданы или изменены, такие как файл A в этом случае.
Я ищу что-то вроде:
select * from table1 where fileID > 2 AND File NOT IN (SELECT File FROM table1 WHERE File <=2) AND DateModified NOT IN (SELECT DateModified FROM table1 WHERE File <=2)
Я не знаю, почему, когда я выполняю такой запрос, я получаю разные результаты.Возможно, мне придется сгруппировать File и DateModified в один столбец, чтобы он работал.