Функция SQL Server 2000 для создания записи datetime

Мне дали задание отобразить, когда запись в базе данных была добавлена, однако предыдущие разработчики никогда не создавали для этого поля, и я не могу вернуться и составить даты для всех существующих записей. Есть ли простой способ извлечь дату создания записи из запроса SQL server 2000.

SELECT RECORD_CREATED_DATE FROM tblSomething WHERE idField = 1

RECORD_CREATED_DATE не является полем в существующей таблице. Есть ли какая-то функция SQL для получения этой информации?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
4
0
4 560
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Если он не хранится как поле, информация будет потерял после перезапуска журнала транзакций (обычно ежедневно), а может быть, даже раньше.

спасибо, вот что я подумал. вздох. Я надеялся, что был какой-то недокументированный вызов функции или что-то, что материализуется из ниоткуда. Руководители проектов не понимают концепции «невозможно сделать». и в этой ситуации, к сожалению, нет возможности получить нужные данные.

stephenbayer 22.09.2008 21:59

Я не знаю, как получить эту информацию для существующих записей. Однако в дальнейшем вы можете создать таблицу аудита, в которой хранятся TableName и RecordCreateDate (или что-то подобное.

Затем для соответствующих таблиц вы можете сделать триггер вставки:

CREATE TRIGGER trigger_RecordInsertDate
ON YourTableName
AFTER INSERT
AS
BEGIN
 -- T-SQL code for inserting a record and timestamp
 -- to the audit table goes here
END

Нет, к сожалению, дата вставки или последнего обновления не сохраняется автоматически для каждой записи.

Для этого вам нужно создать два столбца дата и время в вашей таблице (например, Создано на, Обновление), а затем в триггере ВСТАВЛЯТЬ установить CreatedOn = getdate (), а в триггере ОБНОВИТЬ установить UpdatedOn = getdate ().

CREATE TRIGGER tgr_tblMain_Insert
   ON  dbo.tblMain
   AFTER INSERT
AS 
BEGIN
    set nocount on

    update dbo.tblMain
    set CreatedOn = getdate(),
    CreatedBy = session_user
    where tblMain.ID = INSERTED.ID

END

Мне также нравится создавать столбцы Создан и Обновлено от varchar (20), которые я устанавливаю на session_user или обновляю другими методами.

Я обычно так и делаю, но меня не было рядом, когда этот проект изначально был закончен.

stephenbayer 22.09.2008 23:09

создать еще один столбец и присвоить ему значение по умолчанию getdate (), которое позаботится о вставленной дате, для обновленной даты вам нужно будет написать триггер обновления

С этого момента я бы начал с внесения этой информации. Создайте два столбца: InsertedDate, LastUpdatedDate. Используйте значение по умолчанию getdate () для первого и триггер обновления, чтобы заполнить второй (возможно, также стоит рассмотреть UpdatedBy). Затем я бы написал запрос для отображения информации с помощью оператора CASE, чтобы отобразить дату, если она есть, и отобразить «Неизвестно», если поле имеет значение NULL. Это усложняется, если вам нужно сохранить запись обо всех обновлениях. Тогда вам нужно использовать таблицы аудита.

Другие вопросы по теме