Я создал таблицу в Oracle XE, и у меня есть поле с датой типа. Я хотел бы, если это возможно, когда я вставляю строку, она автоматически заполняет это поле текущей датой из системы.
Я вставляю строки из приглашения SQL.
Спасибо
Я создал таблицу в Oracle XE, и у меня есть поле с датой типа. Я хотел бы, если это возможно, когда я вставляю строку, она автоматически заполняет это поле текущей датой из системы.
Я вставляю строки из приглашения SQL.
Спасибо
Вот как вам нужно правильно отформатировать таблицу:
create table test (first number
, second timestamp default systimestamp
, third varchar2(12));
И ваше значение по умолчанию всегда является текущим системным временем, отформатированным как временная метка.
timestamp
, почему бы по умолчанию не использовать systimestamp
, а не sysdate
?
- person APC; 09.01.2010
sysdate
) точна только до ближайшей секунды, временная метка (возвращаемая systimestamp
) имеет большую точность (например, 1000-я секунда или лучше)
- person Jeffrey Kemp; 10.01.2010
изменить поле после создания таблицы
ALTER TABLE table MODIFY time_collumn TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
Или вы также можете использовать триггер:
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;
Фрагмент ниже может быть полезен, если мы забудем добавить ограничение при создании таблицы:
ALTER TABLE TABLE_NAME
ADD CONSTRAINT CONSTRAINT_NAME
COLUMN_NAME DATA_TYPE DEFAULT CURRENT_DATE;
ADD CONSTRAINT
предназначен для Oracle, а не для другой СУБД? Потому что в моем случае я получаю сообщение об ошибке ORA-01430: добавляемый столбец уже существует в таблице 01430. 00000 - добавляемый столбец уже существует в таблице. Oracle пытается добавить новый столбец, а не только ограничение.
- person bugybunny; 07.01.2019