Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2014, 07:47   #1
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
Смущение Дата последнего редактирования таблицы

Я пишу программу, которая должна показывать пользователю, что его таблица была изменена. Не важно, удалили или добавили там строчку, или просто редактировали что то.
Мне нужен запрос, который бы показывал дату и время последнего редактирования таблицы.
Я в начале воспользовался таким вот запросом:
Код:
select * from sys.tables
И там есть два поля с датами. Одно поле CreateDate, это мне не нужно.
И второе, вроде бы ModifyDate.... Я точно не помню, но примерно такие у них названия.
Ни одна из них мне не подходит...
Подскажите что нибудь... А то уже с ума схожу от этого SQL
Janger вне форума Ответить с цитированием
Старый 15.07.2014, 07:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А СУБД какая?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2014, 08:34   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

По логику на ModifyDate будет ограничения DEFAULT GETDATE() или DEFAULT SYSDATE зависит от СУБД как Stilet говорить . Но логика там будет такой . DEFAULT SYSDATE - при изменение записей автоматически вставляет "текущая дата"

1. Сортируем дата по убивание
Код:
select *
from Table
order by  ModifyDate desc
2. Дата последнего редактирования таблицы
Код:
select  top 1 WITH TIES *
from Orders
order by OrderDate desc
Но все зависит от СУБД да, Но принцип такой
xxbesoxx вне форума Ответить с цитированием
Старый 15.07.2014, 11:44   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мне вот интересно, а зачем такую инфу мониторить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2014, 12:09   #5
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Да мне тоже интересно . скорее всего изначально хотели наблюдатель этого и за это создали поля CreateDate и ModifyDate
xxbesoxx вне форума Ответить с цитированием
Старый 15.07.2014, 23:19   #6
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

SQL Server.
Нужно мне это для того, что бы Delphi отображал мне все нововведения введённые в таблице.
p.s. Я ничего умнее не смогу придумать, как в таймере, проверять "нужную мне дату", и если предыдущая дата не равна новой (30 сек.), тогда происходит
Код:
ADOQuery1.Close;
ADOQuery1.Open;
И ещё нужно будет поставить условие, если в данный момент ADOQuery1 редактируется, тогда не "обновлять".
Ну вот такая у меня идея.
Janger вне форума Ответить с цитированием
Старый 16.07.2014, 07:54   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что бы Delphi отображал мне все нововведения введённые в таблице.
Всего-то... Ну заведи в каждой таблице поле с датой и временем. Поставь на таблицу триггер, наполняющий это поле при вставке или замене. И сделай некую таблицу, где будет список юзеров и дата последнего мониторинга для каждого юзверя.
Тогда при любом телодвижении запрашивай дату из этой таблицы, и согласно ей выбирай записи из таблиц - те что по дате больше. После выбора обновляй дату последнего мониторинга.

Плюс к этому сделай по UDP рассылку (если юзера в локалке) неких новостей от других юзеров - мол "Юзер №2 вставил данные - обнови такую-то таблицу", а программа пусть при этом перечитывает (Аккуратно!) данне, которые нужно переобновить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.07.2014, 09:48   #8
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Всего-то... Ну заведи в каждой таблице поле с датой и временем.
А еще проще нельзя сделать?
Потому что, создавать еще 2 адошки, которая изменяет и которая проверяет слишком муторно.
я думал как то одним запросом обойтись

Код:
select * from sys.dm_db_index_usage_stats
Вот!
Можно использовать этот запрос, я его только что нагуглил.
а найти свою таблицу можно по номеру object_id.
А его можно найти в предыдущем моем запросе.

Последний раз редактировалось Stilet; 16.07.2014 в 10:41.
Janger вне форума Ответить с цитированием
Старый 16.07.2014, 10:43   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
создавать еще 2 адошки, которая изменяет и которая проверяет слишком муторно.
А ты почитай внимательно что я написал. Я про две ADO не говорил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дата создания и редактирования книги tae1980 Microsoft Office Excel 6 22.11.2010 23:51
Как реализовать заполнение в ячейке датой последнего редактирования строки? nixelent Microsoft Office Excel 3 15.11.2010 10:22
Дата и время редактирования строки! PapaHedgehog Microsoft Office Excel 2 28.10.2009 20:49
Дата последнего изменения файла GrindeX Паскаль, Turbo Pascal, PascalABC.NET 2 26.05.2009 17:22
В FileListBox1 дата последнего редактирования файла lexaltd Компоненты Delphi 2 06.08.2008 20:57