Forum Webscript.Ru
		Общие => Базы данных => Тема начата: Fluke от 26 Сентября 2001, 20:45:21
		
			
			- 
				Как определить средствами MySQL время последнего изменения таблицы или базы данных.
 
 С уважением Fluke
- 
				Дык сохраняй записи с датой. Вот и будет время.
			
- 
				А другого пути нет?
 Ну типа что-то вроде last updated или last modified.
 А то добавлять дополнительную колонку к таблице, заполнять ее значениями, затем выбирать из нее наибольшее значение.... Не спортивно это.
 Да и как быть с самой базой данных - с каждой таблицей повторять данную операцию?
 
 С уважением.
- 
				Ну тогда надо смотреть время модификации файла с нужной таблицей.
			
- 
				имя_таблицы.MYD
			
- 
				имя_таблицы.MYD
 -----------------------------------
 
 Это если таблица типа MyISAM, а если HEAP или BDB. Более того, я спрашивал как это сделать средствами MySQL, а не
 при помощи вызова каких-нибудь системных программ.
- 
				Средствами Mysql имхо никак.
			
- 
				Средствами Mysql имхо никак.
 
 
 __________________
 С уважением, Алексей Нестеренко.
 
 
 
 А вот и "как". Покопался я тут в документации и нашел способ.
 
 #!/usr/bin/perl -w
 
 use DBI;
 use strict;
 my ($dbh, $sth, $hash_ref);
 
 $dbh = DBI->connect("DBI:mysql:имя_базы", \'имя_таблицы\', \'пароль\') or die $DBI::errstr;
 
 $sth = $dbh->prepare("SHOW TABLE STATUS FROM имя_базы LIKE \'имя_таблицы\'");
 $sth->execute() or die $sth->errstr();
 
 $hash_ref = $sth->fetchrow_hashref;
 print $hash_ref->{\'Update_time\'}."\\n";
 
 
 $sth->finish();
 
 $dbh->disconnect();
 
 exit(0);
 
 
 В Unix все работает OK (build 3.23.41). А вот в Windows (build 3.23.33) возникла un petit probleme. Поле Update_time изменяется только если удаляются все данные из таблицы при помощи delete from имя_таблицы или truncate, а вот insert и update в Windows 95 для MySQL 3.23.33 не меняет это поле. Может у кого стоит другой сервер или Windows, узнать глюк ли это системы или сервера, а может так и надо под Windows?
 
 С уважением
- 
				У меня работает все правильно. Вер. 3.23.32 :)
			
- 
				Кстати, вспомнил. В мускле вроде подразделение по версиям. Типа если четное окончание - стабильная, нечетное окончание - нестабильная. Или наоборот. Вот  не работает на 3.23.33.
			
- 
				Хотел также добавить, что прямых путей обнаружить время последнего изменения самой базы данных я не нашел.
 Вероятнее всего придется определять Update_time для каждой таблицы в отдельности и определять время последнего изменения самой директории в которой находятся файлы базы данных, а затем выбирать максимальное значение.
 
 С уважением.