Погода: -12°C
Samara24.Форум /Компьютеры Интернет Связь / Программирование /

Узнать дату появления записи в таблице SQL

  • Есть таблица в базе данных ORACLE 8i, есть таблица в которую помещаются записи, НО нет столбца когда запись была туда записана. Так вот очень хотелось бы знать есть ли способ всетаки узнать? Собственно хотелось бы посчитать сколько записей было добавлено за 2006 год.

  • Напрямую никак. Только косвенно, и то не 100%, но попытаться можно.
    Если есть другие таблицы где есть даты, и если для генерации из id использовалась одна последовательность.

  • Это надо решать на уровне планирования базы.
    Во все таблицы добавить поля дата-время-создания и дата-время-последнейправки.если клиет не ваш напишите хранимую процедуру которая будет срабатывать по тригеру и добавлять в эти колонки даты.
    тогда за 2007 год учет будет.

  • В ответ на: Во все таблицы добавить поля
    Во все точно не стоит (справочники и пр.), токо в ключевые таблицы. Так будет ясно кто последний вставлял/изменял строчку.

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

    Еще повторюсь, что делать нужно аккуратно, так как это дополнительные тормоза, но иногда это многократно окупаются. Делается это конечно на триггере, так как он быстрее хранимой процедуры, второе он обязательно выполнится! Ну и разумеется доступ на изменение этого триггера и таблицы куда пишутся изменения только админ базы должен иметь.

    "Самый мудрый внешне во всём подобен самому глупому", народная китайская мудрость.

  • В ответ на: и заполняется два дополнительных поля:
    Забыл, поправляюсь 3 поля, еще логин юзера. Ну и на вставку и изменения отрабатывает триггер после операции, на удаление до.

    "Самый мудрый внешне во всём подобен самому глупому", народная китайская мудрость.

  • Чтобы в таблицу автоматом добавлялась дата вставки записи не обязательно вешать триггер на insert, достаточно на этапе создания таблицы сделать следующее:
    Create table ...
    (
    CDate DATE DEFAULT SYSDATE NOT NULL,
    ...
    )

    Исправлено пользователем dba (31.01.07 14:42)

Записей на странице:

Перейти в форум

Модератор: