MySQL has got a built in feature to automatically update a column to the current timestamp whenever the row is updated, just by using the default-clause. The "on update current_timestamp" feature can be quite handy if you have lazy developers who can't be bothered writing full insert statements. :)
The MySQL create table statement would be something like this:
create table p (
id int,
a varchar(10),
d timestamp DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
constraint p_pk primary key (id)
);
Not difficult to do in Oracle either, but we need a trigger to assist.
Example:
SQL> alter session set nls_Date_format='HH24:MI:SS';
Session altered.
SQL> create table p (id number, a varchar2(10), d date default sysdate,
constraint p_pk primary key (id));
Table created.
SQL> insert into p(id,a) values(1,'test');
1 row created.
SQL> host cat p_test.sql
CREATE OR REPLACE TRIGGER p_d_trig
BEFORE UPDATE ON p
FOR EACH ROW
BEGIN
select sysdate into :new.d from dual;
END p_d_trig;
/
SQL> @p_test
Trigger created.
SQL> select * from p;
ID A D
---------- ---------- --------
1 test 21:15:05
SQL> update p set a='foo' where id=1;
1 row updated.
SQL> select * from p;
ID A D
---------- ---------- --------
1 foo 21:16:44
SQL>