David Bear <david.bear@asu.edu> writes:
> Breifly, I want to do an insert where the values for three of the attributes
> are combined via a function and make up the value for the fourth attribute.
Well, there's more than one way to do it. What you didn't tell us is
just how tightly you want to bind column 4 to be func-of-cols-1-2-3.
Do you want it to be purely read-only and always equal to the function
on the current values of the other columns? Do you want to force it
to be that way on initial insertion of the row, but subsequent updates
could allow the columns to diverge? Do you merely want it as a default
that could be overridden during the insert? Also, is the function
expensive enough that you really want to precompute it at insert time
and store the output; or maybe it should be just a "virtual" column
where the function is computed on demand during readout?
Depending on what you think about these questions, you might choose to
not store column 4 physically at all, but just have it be part of a view
wherein the function is computed on-the-fly. Or you could use an ON
INSERT and/or ON UPDATE trigger, perhaps with different degrees of
aggressiveness about whether it overrides a pre-supplied value for
column 4.
regards, tom lane