Автоматически заполнять дату в таблице оракула

Я создал таблицу в Oracle XE, и у меня есть поле с датой типа. Я хотел бы, если это возможно, когда я вставляю строку, она автоматически заполняет это поле текущей датой из системы.

Я вставляю строки из приглашения SQL.

Спасибо


person Adnan    schedule 09.01.2010    source источник


Ответы (4)


Вот как вам нужно правильно отформатировать таблицу:

create table test (first number
                   , second timestamp default systimestamp
                   , third varchar2(12));

И ваше значение по умолчанию всегда является текущим системным временем, отформатированным как временная метка.

person ant    schedule 09.01.2010
comment
Если столбец имеет тип данных timestamp, почему бы по умолчанию не использовать systimestamp, а не sysdate? - person APC; 09.01.2010
comment
в чем разница? Я использую sysdate, если вы можете объяснить, это было бы здорово и для меня, и для Андана, который задал вопрос. - person ant; 09.01.2010
comment
дата (то, что возвращает sysdate) точна только до ближайшей секунды, временная метка (возвращаемая systimestamp) имеет большую точность (например, 1000-я секунда или лучше) - person Jeffrey Kemp; 10.01.2010

изменить поле после создания таблицы

ALTER TABLE table MODIFY time_collumn TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
person Жасулан Бердибе&    schedule 16.01.2013

Или вы также можете использовать триггер:

CREATE OR REPLACE TRIGGER date_trigger

BEFORE INSERT

ON table_name

REFERENCING NEW AS NEW

FOR EACH ROW

BEGIN

SELECT sysdate INTO :NEW.column_name FROM dual;

END;
person Vivek R    schedule 04.03.2014
comment
Это работает лучше, если вам нужно убедиться, что отметка времени никогда не вводится вручную. Хотя такой случай может быть редким. - person Monarch Wadia; 14.12.2015

Фрагмент ниже может быть полезен, если мы забудем добавить ограничение при создании таблицы:

ALTER TABLE TABLE_NAME 
ADD CONSTRAINT CONSTRAINT_NAME
COLUMN_NAME DATA_TYPE DEFAULT CURRENT_DATE;
person Sagnik    schedule 20.11.2018
comment
stackoverflow.com/a/10300790/4040068 говорит, что Oracle не реализует DEFAULT как CONSTRAINTS. Я использую очень старую версию Oracle (11g), но быстрый поиск в Google также не помог выяснить, является ли это новой функцией. Вы уверены, что ваш ADD CONSTRAINT предназначен для Oracle, а не для другой СУБД? Потому что в моем случае я получаю сообщение об ошибке ORA-01430: добавляемый столбец уже существует в таблице 01430. 00000 - добавляемый столбец уже существует в таблице. Oracle пытается добавить новый столбец, а не только ограничение. - person bugybunny; 07.01.2019