From: | Robin Munn <rmunn(at)pobox(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Calculating default values on insert? |
Date: | 2003-11-05 03:51:36 |
Message-ID: | slrnbqgt0o.cgq.rmunn@rmunnlfs.dyndns.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
I'm trying to calculate the default values of a column when I insert a
row, based on the values of other columns. It's something I thought
should be simple enough, but I can't seem to figure out how to do it.
Here's a basic example of what I'm trying to do:
CREATE TABLE money (
amount numeric NOT NULL,
currency text NOT NULL DEFAULT 'USD',
currency_per_usd numeric NOT NULL DEFAULT 1.00,
usd_amount NOT NULL DEFAULT (amount / currency_per_usd) -- This fails.
);
INSERT INTO money (amount) VALUES (50.00); -- 50 U.S. dollars
INSERT INTO money (amount, currency, currency_per_usd)
VALUES (
50.00,
'EUR',
1.25
); -- 50 Euros at an exchange rate of 1.25 Euros per U.S. dollar
SELECT amount, usd_amount FROM money;
amount | usd_amount
--------+------------
50.00 | 50.00
50.00 | 40.00
I realize that I could calculate the usd_amount when I do a SELECT:
SELECT amount, (amount / currency_per_usd) AS usd_amount FROM money;
But it would be nice to be able to calculate the default value when I
INSERT the values.
Is there a way of doing this, or should I just create a VIEW that will
do the calculation for me?
--
Robin Munn
rmunn(at)pobox(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Alex | 2003-11-05 04:27:15 | Changes in Rel. 7.4 |
Previous Message | Alam Surya | 2003-11-05 02:46:53 | access linux command from SQL Query |