Как можно автоматически обновлять время и дату при вставке или обновлении данных в oracle?

#oracle

#Oracle

Вопрос:

Я хочу, чтобы каждый раз, когда данные вводятся в таблицу oracle, дата и время должны автоматически обновляться в одном из столбцов с именем ‘CREATION_DATE’.

Комментарии:

1. Этого можно достичь, используя либо значение SYSDATE по умолчанию, либо триггер, который гарантирует, что оно заполнено. Правильный ответ будет зависеть от ваших конкретных потребностей и кода. Например, значение по умолчанию может быть переопределено, если во вставке явно указано значение NULL.

Ответ №1:

Установка значения SYSDATE по умолчанию более эффективна, чем триггер. Как упоминалось в helpc, значение по умолчанию может быть переопределено, если во вставке явно указано значение NULL. Если вы вообще не собираетесь передавать дату-время через приложение, вы можете определить столбец как NOT NULL с значением по умолчанию sysdate .

Комментарии:

1. И как значение по умолчанию помогает при обновлениях?

2. Да, я использовал функциональность SYSDATE. Это более эффективно и меньше ломает голову. Спасибо

3. Однако я также хотел бы знать, можно ли также учитывать время?

4. Спасибо @a_horse_with_no_name за ваш комментарий! snigdha — столбец типа ‘date’ также содержит время. Измените ‘nls_date_format’ в вашем сеансе sql_plus, и вы сможете это увидеть. SQL> alter session set nls_date_format = ‘ДД-ПН-ГГГГ ЧЧ24: MI:SS’; Как справедливо указал a_horse_with_no_name, вы не можете автоматически обновлять временную метку для последующих изменений в этой строке. Вам потребуется иметь еще один столбец аудита ‘modified_date’, который вы могли / должны указывать в системе во время обновлений. Однако следует избегать срабатываний.

Ответ №2:

Триггер будет делать то, что вы хотите. Я думаю, что что-то вроде этого — это то, что вы ищете:

 CREATE OR REPLACE TRIGGER date_trigger
  AFTER INSERT ON your_table
  FOR EACH ROW
WHEN (new.your_table> 0)
BEGIN
    :NEW.CREATION_DATE:= SYSDATE;
END;
/
  

В зависимости от ваших потребностей я обычно предпочитаю добавлять столбцы create_date и update_date, чтобы получать временные метки для изменений, которые могут произойти позже.

Комментарии:

1. Как вы записываете временную метку delete мысли? (Без этого вся концепция логически несовместима сама с собой.) Я хочу сказать, зачем вам нужно отслеживать эту информацию?