Обсуждение: Default Value in Table Setup Help
Hello all,
I am working on setting up a table that will append a sequence to the end
of the value inserted.
Example;
INSERT INTO test (test) VALUES ('abcd');
And have the data in the database be;
abcd0001
Now I do have things setup else where were the default value for the field
is such:
default ('abcd'::text || lpad(text(nextval('test_sequence'::text)), 4,
'0'::text))
But i want the "abcd" or what erver to be added in the insert?
What am I missing to make this happen?
At 02:57 PM 8/18/03 -0400, Dev wrote:
>Hello all,
>
>I am working on setting up a table that will append a sequence to the end
>of the value inserted.
>Example;
>INSERT INTO test (test) VALUES ('abcd');
>And have the data in the database be;
>abcd0001
>
>Now I do have things setup else where were the default value for the field
>is such:
>default ('abcd'::text || lpad(text(nextval('test_sequence'::text)), 4,
>'0'::text))
>
>But i want the "abcd" or what erver to be added in the insert?
>
>What am I missing to make this happen?
I don't think you can do what you want to do with a column
default. Instead you want to look at the rewrite rules. You can find
information about them here:
http://www.postgresql.org/docs/7.3/interactive/sql-createrule.html
If I'm wrong I'm sure someone here will correct me :).
--- Adam Kavan
--- akavan@cox.net
On Mon, 18 Aug 2003, Dev wrote:
> Hello all,
>
> I am working on setting up a table that will append a sequence to the end
> of the value inserted.
> Example;
> INSERT INTO test (test) VALUES ('abcd');
> And have the data in the database be;
> abcd0001
>
> Now I do have things setup else where were the default value for the field
> is such:
> default ('abcd'::text || lpad(text(nextval('test_sequence'::text)), 4,
> '0'::text))
>
> But i want the "abcd" or what erver to be added in the insert?
>
> What am I missing to make this happen?
You don't want to use a default (since that'll be ignored if you actually
pass in a value for the column). You probably want a before trigger that
alters the value that was inserted before the insertion actually happens.
On Mon, Aug 18, 2003 at 14:57:12 -0400,
Dev <dev@umpa-us.com> wrote:
> Hello all,
>
> I am working on setting up a table that will append a sequence to the end
> of the value inserted.
> Example;
> INSERT INTO test (test) VALUES ('abcd');
> And have the data in the database be;
> abcd0001
>
> Now I do have things setup else where were the default value for the field
> is such:
> default ('abcd'::text || lpad(text(nextval('test_sequence'::text)), 4,
> '0'::text))
>
> But i want the "abcd" or what erver to be added in the insert?
>
> What am I missing to make this happen?
I think you want to use a trigger to do this. The default function only
gets used if you don't supply a value.