default timestamp in postresql
default timestamp in postresql
am 29.07.2004 09:16:28 von azah azah
Hi,
I need some help to solve a problem regarding transfer the db from
mysql to postresql.
Previously in mysql table field as below , will be add automatic in
database when execute insert statement.
= submittime timestamp NOT NULL
But in postresql the timestamp cannot insert automatic when execute
insert statement.
How can I solve this problem instead of change the php code?
---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend
Re: default timestamp in postresql
am 29.07.2004 09:22:27 von Michael Glaesemann
On Jul 29, 2004, at 4:16 PM, azah azah wrote:
> Previously in mysql table field as below , will be add automatic in
> database when execute insert statement.
>
> = submittime timestamp NOT NULL
subttime timestamp NOT NULL DEFAULT now()
Michael Glaesemann
grzm myrealbox com
---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend
Re: default timestamp in postresql
am 29.07.2004 09:30:59 von Christopher Kings-Lynne
> Previously in mysql table field as below , will be add automatic in
> database when execute insert statement.
>
> = submittime timestamp NOT NULL
>
> But in postresql the timestamp cannot insert automatic when execute
> insert statement.
> How can I solve this problem instead of change the php code?
Make it:
submittime timestamp not null default current_timestamp
Chris
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings
Re: default timestamp in postresql
am 29.07.2004 09:58:36 von azah azah
thanks all, it solve now.
On Thu, 29 Jul 2004 15:30:59 +0800, Christopher Kings-Lynne
wrote:
> > Previously in mysql table field as below , will be add automatic in
> > database when execute insert statement.
> >
> > = submittime timestamp NOT NULL
> >
> > But in postresql the timestamp cannot insert automatic when execute
> > insert statement.
> > How can I solve this problem instead of change the php code?
>
> Make it:
>
> submittime timestamp not null default current_timestamp
>
> Chris
>
>
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
Re: default timestamp in postresql
am 29.07.2004 12:01:52 von Scott Marlowe
On Thu, 2004-07-29 at 01:16, azah azah wrote:
> Hi,
> I need some help to solve a problem regarding transfer the db from
> mysql to postresql.
> Previously in mysql table field as below , will be add automatic in
> database when execute insert statement.
>
> = submittime timestamp NOT NULL
>
> But in postresql the timestamp cannot insert automatic when execute
> insert statement.
> How can I solve this problem instead of change the php code?
If you need that field to always be updated whenever the row is changed,
you can use a trigger.
-- FUNCTION --
CREATE FUNCTION modtime () RETURNS opaque AS '
BEGIN
new.lm :=''now'';
RETURN new;
END;
' LANGUAGE 'plpgsql';
-- TABLE --
CREATE TABLE dtest (
id int primary key,
fluff text,
lm timestamp without time zone
);
--TRIGGER --
CREATE TRIGGER dtest
BEFORE UPDATE or INSERT ON dtest FOR EACH ROW EXECUTE PROCEDURE
modtime(lm);
-- SQL TESTS --
INSERT INTO dtest (id, fluff) VALUES (1,'this is a test');
INSERT INTO dtest (id, fluff) VALUES (2,'this is another test');
SELECT * FROM dtest;
1 | this is a test | 2003-04-02 10:33:12.577089
2 | this is another test | 2003-04-02 10:33:18.591148
UPDATE dtest SET id=3 WHERE id=1;
3 | this is a test | 2003-04-02 10:34:52.219963 [1]
UPDATE dtest SET fluff='now is the time' WHERE id=2;
SELECT * FROM dtest WHERE id=2;
2 | now is the time | 2003-04-02 10:38:06.259443 [2]
UPDATE dtest SET lm='2003-04-02 08:30:00' WHERE id=3;
SELECT * FROM dtest WHERE id=3;
3 | this is a test | 2003-04-02 10:36:15.45687 [3]
[1] The timestamp has changed for this record when we changed the id field.
[2] The timestamp also changes for the fluff field.
[3] We tried to set lm, but the trigger on that field in dtest intercepted the change and forced it
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)