MySQL має вбудовану властивість для автоматичного оновлення дати при кожній зміні рядка вже існуючої таблиці, яка має вигляд "on update current_timestamp".
Створення таблиці в MySQL буде виглядати приблизно так:
create table p ( id int, a varchar(10), d timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, constraint p_pk primary key (id) );Для того щоб зробити теж саме в Oracle потрібно створити триггер, який буде виконувати функцію оновлення дати і часу.
Наприклад:
-- створення таблиці
create table p
(
id number,
a varchar2(10),
d date default sysdate,
constraint p_pk primary key (id)
);
-- заповнення таблиці
insert into p(id,a) values(1,'test');
-- створення тригеру
CREATE OR REPLACE TRIGGER p_d_trig
BEFORE UPDATE ON p
FOR EACH ROW
BEGIN
-- вводим умову, щоб можна було оновлювати дату через update
-- якщо її не буде,то виконання, наприклад,
-- update p set d=to_date('2010-02-03 23:12:10','yyyy-mm-dd hh24:mi:ss') where id=1
-- призведе не до потрібної нам дати, а до фактичної дати зміни
IF NOT UPDATING ('D') then
select sysdate into :new.d from dual;
END IF;
END p_d_trig;
Велика подяка за допомогу ToshaCh.




Немає коментарів:
Дописати коментар