Узнать дату появления записи в таблице SQL
7217
5
Есть таблица в базе данных ORACLE 8i, есть таблица в которую помещаются записи, НО нет столбца когда запись была туда записана. Так вот очень хотелось бы знать есть ли способ всетаки узнать? Собственно хотелось бы посчитать сколько записей было добавлено за 2006 год.
hamster
Напрямую никак. Только косвенно, и то не 100%, но попытаться можно.
Если есть другие таблицы где есть даты, и если для генерации из id использовалась одна последовательность.
hamster
Это надо решать на уровне планирования базы.
Во все таблицы добавить поля дата-время-создания и дата-время-последнейправки.если клиет не ваш напишите хранимую процедуру которая будет срабатывать по тригеру и добавлять в эти колонки даты.
тогда за 2007 год учет будет.
Господин Уэф!
Во все таблицы добавить поля
Во все точно не стоит (справочники и пр.), токо в ключевые таблицы. Так будет ясно кто последний вставлял/изменял строчку.

Для полного контроля всех операций: вставка/изменение/удаление создается отдельная таблица, с количеством полей как в контролируемой, после любой операции триггером заносятся строка после операции, и заполняется два дополнительных поля: дата (таймштамп) и тип операции (например I, U, D). Так можно контролировать абсолютно все изменения. Делается на 1-2 самых важных таблиц, изменения которых несет большие потери для бизнеса.

Еще повторюсь, что делать нужно аккуратно, так как это дополнительные тормоза, но иногда это многократно окупаются. Делается это конечно на триггере, так как он быстрее хранимой процедуры, второе он обязательно выполнится! Ну и разумеется доступ на изменение этого триггера и таблицы куда пишутся изменения только админ базы должен иметь.
tpi
и заполняется два дополнительных поля:
Забыл, поправляюсь 3 поля, еще логин юзера. Ну и на вставку и изменения отрабатывает триггер после операции, на удаление до.
Господин Уэф!
Чтобы в таблицу автоматом добавлялась дата вставки записи не обязательно вешать триггер на insert, достаточно на этапе создания таблицы сделать следующее:
Create table ...
(
CDate DATE DEFAULT SYSDATE NOT NULL,
...
)