From: | <btober(at)seaworthysys(dot)com> |
---|---|
To: | <dustin(at)spy(dot)net>, <pgsql-general(at)postgresql(dot)org>, <paulo(dot)pizarro(at)digitro(dot)com(dot)br> |
Subject: | Re: Simulating sequences |
Date: | 2003-08-19 11:37:05 |
Message-ID: | 11187.12.111.55.140.1061293025.squirrel@$HOSTNAME |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
>
> On Monday, Aug 18, 2003, at 09:01 US/Pacific, <btober(at)seaworthysys(dot)com>
> wrote:
>
>> With those items in mind, your function could become:
>>
>> CREATE FUNCTION key_generation(integer, varchar(20)) RETURNS integer
>> AS'
>> DECLARE
>> the_department ALIAS FOR $1;
>> the_table_name ALIAS FOR $2;
>> BEGIN
>> IF NOT EXISTS(SELECT 1 FROM cnfg_key_generation
>> WHERE the_department = department AND the_table_name =
>> table_name)
>> THEN
>> INSERT INTO cnfg_key_generation VALUES
>> (the_department,the_table_name,0);
>> END IF;
>
> I would get the insert out of there, too. If it doesn't exist, throw
> an exception. I don't believe sequences should automatically create
> themselves (the tables and columns don't).
>
I agree. In my own case I need a sequence for each employee, and the
simulated sequence is defined as a column in the employee table, so I'm
guaranteed to have a a place to do the incrementing when the need arises.
Also, I used a "DEFAULT 0" clause on the column definition for the
sequence value, rather than explicitly inserting a zero. I left the
insert statement in place for compatibility with the original inquirer's
definition.
~Berend Tober
From | Date | Subject | |
---|---|---|---|
Next Message | Shridhar Daithankar | 2003-08-19 12:31:33 | Re: Buglist |
Previous Message | Bo Lorentsen | 2003-08-19 11:32:00 | Buglist |