Re: Serial not nulla

From: "Shavonne Marietta Wijesinghe" <shavonne(dot)marietta(at)studioform(dot)it>
To: "Shane Ambler" <pgsql(at)Sheeky(dot)Biz>
Cc: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Serial not nulla
Date: 2008-02-11 10:24:59
Message-ID: 009b01c86c98$5ba507b0$3102a8c0@dream
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Thanks alot Shane..Just what I wanted.. Didn't think of a solution with 3
primary keys.

Have a nice day ^___^

Shavonne Wijesinghe
www.studioform.it

----- Original Message -----
From: "Shane Ambler" <pgsql(at)Sheeky(dot)Biz>
To: "Shavonne Marietta Wijesinghe" <shavonne(dot)marietta(at)studioform(dot)it>
Cc: <pgsql-sql(at)postgresql(dot)org>
Sent: Friday, February 08, 2008 2:17 PM
Subject: Re: [SQL] Serial not nulla

> Shavonne Marietta Wijesinghe wrote:
>> Hello
>>
>> I am working with a database that has a Index number defined as Serial
>> NOT NULL
>>
>> I used this because,
>> 1. I want to make sure that when many users login at the same time the
>> Index number won't be repeated.
>> 2. I don't have to increment it by programming (I use ASP)
>>
>> But now i have a situation that i need to index numbers. For Example i
>> could have a structure like this
>>
>> INDEX1 - N_SHEET - TOT_SHEET
>> 1 - 1 - 1
>> 2 - 1 - 3
>> 2 - 2 - 3
>> 2 - 3 - 3
>>
>> N_SHEET and TOT_SHEET are filled by the user (via web) but i need to hold
>> on to the INDEX. And while userA is filling the 3 row if userB loggs in i
>> need to provide the INDEX1 with 3.
>>
>> Any idea??
>>
>
> As well as using the "Serial NOT NULL" you have also defined this column
> as PRIMARY KEY (or a unique index) which is what is preventing the
> duplicates in that column. (A primary key is enforced with a unique index)
>
>
> From the sample shown you can use all three columns as the primary key
> with something similar to -
>
> ALTER TABLE my_user_sheets DROP CONSTRAINT my_user_sheets_pkey;
> ALTER TABLE my_user_sheets ADD PRIMARY KEY ("INDEX1", "N_SHEET",
> "TOT_SHEET");
>
> (this implies that for each user they will have only one row for each
> combination of N_SHEET and TOT_SHEET) If you need to allow them to select
> the same 2 sheet numbers more than once then I would suggest you have an
> extra column for a primary key and redefine INDEX1 as the user_id. (or
> just add a user_id column and leave the INDEX1 as it is)
>
>
>
> It's not recommended but you could also have the table without a primary
> key allowing duplicate value combinations. This would prevent you updating
> a single row though.
>
>
>
> --
>
> Shane Ambler
> pgSQL (at) Sheeky (dot) Biz
>
> Get Sheeky @ http://Sheeky.Biz

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message ncode 2008-02-11 10:25:57 Usage of UUID with 8.3 (Windows)
Previous Message Dean Gibson (DB Administrator) 2008-02-11 09:30:50 Re: Bouncing replies