Обсуждение: timestamp value
Hi All, i created a table, which has a field; type is timestamp to store the record creation/modification value. if i fill this table from a stored procedure the field value is always the SAME! please help me. Ivan __________________________________________________ Do You Yahoo!? Yahoo! Greetings - Send FREE e-cards for every occasion! http://greetings.yahoo.com
Ivan, > i created a table, which has a field; type is > timestamp to store the record creation/modification > value. > > if i fill this table from a stored procedure the field > value is always the SAME! Please provide copies of the table and function schema. You've obviously made a mistake in your syntax, but nobody can help without specifics. -Josh
Thanks for answer,
here is the code of the stored procedure:
DROP FUNCTION a_function();
CREATE FUNCTION a_function () RETURNS interval AS '
DECLARE
process_time interval;
BEGIN
FOR i IN 1..10000 LOOP
INSERT INTO unit (unit_name, mod_date)
VALUES (''a'', current_timestamp);
END LOOP;
select into process_time max(mod_date) -
min(mod_date) from unit;
RETURN process_time;
END;'
LANGUAGE 'plpgsql';
and here is the the table structure:
DROP SEQUENCE seq_unit;
CREATE SEQUENCE seq_unit;
DROP TABLE unit;
CREATE TABLE unit (
unit_id int4 NOT NULL default nextval('seq_unit')
CONSTRAINT unit_pk PRIMARY KEY,
unit_name varchar(10) NOT NULL CHECK (unit_name <>
''),
mod_user varchar(10) NOT NULL DEFAULT
current_user(),
mod_date timestamp(0) NOT NULL
);
thank you
Ivan
--- Josh Berkus <josh@agliodbs.com> wrote:
> Ivan,
>
> > i created a table, which has a field; type is
> > timestamp to store the record
> creation/modification
> > value.
> >
> > if i fill this table from a stored procedure the
> field
> > value is always the SAME!
>
> Please provide copies of the table and function
> schema. You've
> obviously made a mistake in your syntax, but nobody
> can help without
> specifics.
>
> -Josh
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - sign up for Fantasy Baseball
http://sports.yahoo.com
On Mon, 2002-03-04 at 07:45, Ivan Horvath wrote:
> Thanks for answer,
>
> here is the code of the stored procedure:
>
> DROP FUNCTION a_function();
>
> CREATE FUNCTION a_function () RETURNS interval AS '
In 7.2 you can now do CREATE OR REPLACE FUNCTION... rather than DROP
followed by CREATE.
> DECLARE
> process_time interval;
> BEGIN
> FOR i IN 1..10000 LOOP
> INSERT INTO unit (unit_name, mod_date)
> VALUES (''a'', current_timestamp);
> END LOOP;
>
> select into process_time max(mod_date) -
> min(mod_date) from unit;
>
> RETURN process_time;
>
> END;'
> LANGUAGE 'plpgsql';
All operations within a plpgsql procedure happen within a transaction
and within a transaction current_timestamp does not change (by design).
So each separate call to this procedure will produce 10000 identical
inserts.
--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
"Give, and it will be given to you. A good measure,
pressed down, taken together and running over,
will be poured into your lap. For with the same
measure that you use, it will be measured to
you." Luke 6:38
Oliver,
then what can i do -regarding timestamp- if i need to
create such a routine, so called "batch-processing",
which writes data to a table, or more tables at the
same time?
how can i ask the real timestamp value within a stored
procedure?
Ivan
--- Oliver Elphick <olly@lfix.co.uk> wrote:
> On Mon, 2002-03-04 at 07:45, Ivan Horvath wrote:
> > Thanks for answer,
> >
> > here is the code of the stored procedure:
> >
> > DROP FUNCTION a_function();
> >
> > CREATE FUNCTION a_function () RETURNS interval AS
> '
>
> In 7.2 you can now do CREATE OR REPLACE FUNCTION...
> rather than DROP
> followed by CREATE.
>
> > DECLARE
> > process_time interval;
> > BEGIN
> > FOR i IN 1..10000 LOOP
> > INSERT INTO unit (unit_name, mod_date)
> > VALUES (''a'', current_timestamp);
> > END LOOP;
> >
> > select into process_time max(mod_date) -
> > min(mod_date) from unit;
> >
> > RETURN process_time;
> >
> > END;'
> > LANGUAGE 'plpgsql';
>
>
> All operations within a plpgsql procedure happen
> within a transaction
> and within a transaction current_timestamp does not
> change (by design).
> So each separate call to this procedure will produce
> 10000 identical
> inserts.
>
> --
> Oliver Elphick
> Oliver.Elphick@lfix.co.uk
> Isle of Wight
> http://www.lfix.co.uk/oliver
> GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A
> 614D 4C34 3E1D 0C1C
>
> "Give, and it will be given to you. A good
> measure,
> pressed down, taken together and running over,
>
> will be poured into your lap. For with the
> same
> measure that you use, it will be measured to
> you." Luke 6:38
>
__________________________________________________
Do You Yahoo!?
Yahoo! Sports - sign up for Fantasy Baseball
http://sports.yahoo.com
On Mon, 2002-03-04 at 09:49, Ivan Horvath wrote: > Oliver, > > then what can i do -regarding timestamp- if i need to > create such a routine, so called "batch-processing", > which writes data to a table, or more tables at the > same time? > how can i ask the real timestamp value within a stored > procedure? 1. Do you really need to distinguish _within_a_transaction_? 2. Use timeofday()::TIMESTAMP (It's in the docs at User manual 4.8.3) -- Oliver Elphick Oliver.Elphick@lfix.co.uk Isle of Wight http://www.lfix.co.uk/oliver GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C "Give, and it will be given to you. A good measure, pressed down, taken together and running over, will be poured into your lap. For with the same measure that you use, it will be measured to you." Luke 6:38
thank you very much it is working! Ivan --- Oliver Elphick <olly@lfix.co.uk> wrote: > On Mon, 2002-03-04 at 09:49, Ivan Horvath wrote: > > Oliver, > > > > then what can i do -regarding timestamp- if i need > to > > create such a routine, so called > "batch-processing", > > which writes data to a table, or more tables at > the > > same time? > > how can i ask the real timestamp value within a > stored > > procedure? > > > 1. Do you really need to distinguish > _within_a_transaction_? > > 2. Use timeofday()::TIMESTAMP > (It's in the docs at User manual 4.8.3) > > -- > Oliver Elphick > Oliver.Elphick@lfix.co.uk > Isle of Wight > http://www.lfix.co.uk/oliver > GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A > 614D 4C34 3E1D 0C1C > > "Give, and it will be given to you. A good > measure, > pressed down, taken together and running over, > > will be poured into your lap. For with the > same > measure that you use, it will be measured to > you." Luke 6:38 > __________________________________________________ Do You Yahoo!? Yahoo! Sports - sign up for Fantasy Baseball http://sports.yahoo.com