[GENERAL] simulate multiple primary keys

2009-07-02 Thread Brandon Metcalf
I have the following table:

  gms= \d jobclock
  Table public.jobclock
 Column|  Type  |   
Modifiers
  
-++
   jobclock_id | integer| not null default 
nextval('jobclock_jobclock_id_seq'::regclass)
   employee_id | integer| not null
   machine_id  | character varying(4)   | not null
   workorder   | character varying(8)   | not null
   operation   | integer| not null
   bartype | character varying(10)  | not null
   clockin | timestamp(0) without time zone | not null
   clockout| timestamp(0) without time zone | default NULL::timestamp 
without time zone
   comments| character varying(255) | default NULL::character 
varying
  Indexes:
  jobclock_pkey PRIMARY KEY, btree (jobclock_id)
  ...

I need to keep jobclock_id unique and not null, but I also need to
ensure that no row is duplicated.  Is my best bet to drop the current
primary key and make a primary key out of the columns that I want to
ensure remain unique from row to row?

Thanks.


-- 
Brandon

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] simulate multiple primary keys

2009-07-02 Thread Hartman, Matthew
Just create a unique constraint on all of the columns.


Matthew Hartman
Programmer/Analyst
Information Management, ICP
Kingston General Hospital
(613) 549- x4294 
 

 -Original Message-
 From: pgsql-general-ow...@postgresql.org [mailto:pgsql-general-
 ow...@postgresql.org] On Behalf Of Brandon Metcalf
 Sent: Thursday, July 02, 2009 1:28 PM
 To: pgsql-general@postgresql.org
 Subject: [GENERAL] simulate multiple primary keys
 
 I have the following table:
 
   gms= \d jobclock
   Table public.jobclock
  Column|  Type  |
 Modifiers

-++-
 ---
jobclock_id | integer| not null default
 nextval('jobclock_jobclock_id_seq'::regclass)
employee_id | integer| not null
machine_id  | character varying(4)   | not null
workorder   | character varying(8)   | not null
operation   | integer| not null
bartype | character varying(10)  | not null
clockin | timestamp(0) without time zone | not null
clockout| timestamp(0) without time zone | default
NULL::timestamp
 without time zone
comments| character varying(255) | default
NULL::character
 varying
   Indexes:
   jobclock_pkey PRIMARY KEY, btree (jobclock_id)
   ...
 
 I need to keep jobclock_id unique and not null, but I also need to
 ensure that no row is duplicated.  Is my best bet to drop the current
 primary key and make a primary key out of the columns that I want to
 ensure remain unique from row to row?
 
 Thanks.
 
 
 --
 Brandon
 
 --
 Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
 To make changes to your subscription:
 http://www.postgresql.org/mailpref/pgsql-general
.now.


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] simulate multiple primary keys

2009-07-02 Thread Brandon Metcalf
M == matthew.hart...@krcc.on.ca writes:

 M Just create a unique constraint on all of the columns.


Ah.  Didn't realize you could specify more than one column as part of
a unique constraint.

Thanks.

-- 
Brandon

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] simulate multiple primary keys

2009-07-02 Thread Bill Moran
In response to Brandon Metcalf bran...@geronimoalloys.com:

 I have the following table:
 
   gms= \d jobclock
   Table public.jobclock
  Column|  Type  |   
 Modifiers
   
 -++
jobclock_id | integer| not null default 
 nextval('jobclock_jobclock_id_seq'::regclass)
employee_id | integer| not null
machine_id  | character varying(4)   | not null
workorder   | character varying(8)   | not null
operation   | integer| not null
bartype | character varying(10)  | not null
clockin | timestamp(0) without time zone | not null
clockout| timestamp(0) without time zone | default NULL::timestamp 
 without time zone
comments| character varying(255) | default NULL::character 
 varying
   Indexes:
   jobclock_pkey PRIMARY KEY, btree (jobclock_id)
   ...
 
 I need to keep jobclock_id unique and not null, but I also need to
 ensure that no row is duplicated.  Is my best bet to drop the current
 primary key and make a primary key out of the columns that I want to
 ensure remain unique from row to row?

Your primary key can span multiple columns, i.e.
PRIMARY KEY(jobclock_id, employee_id, machine_id)
Could be more columns.

Keep in mind that this ensures that the combination of all those
columns is unique, which may or may not be what you want. 

-- 
Bill Moran
http://www.potentialtech.com
http://people.collaborativefusion.com/~wmoran/

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] simulate multiple primary keys

2009-07-02 Thread Lennin Caro



--- On Thu, 7/2/09, Brandon Metcalf bran...@geronimoalloys.com wrote:

 From: Brandon Metcalf bran...@geronimoalloys.com
 Subject: [GENERAL] simulate multiple primary keys
 To: pgsql-general@postgresql.org
 Date: Thursday, July 2, 2009, 5:27 PM
 I have the following table:
 
   gms= \d jobclock
                
                
               Table
 public.jobclock
      Column    |   
           Type     
         |       
                
    Modifiers
  
 -++
    jobclock_id | integer     
                
   | not null default
 nextval('jobclock_jobclock_id_seq'::regclass)
    employee_id | integer     
                
   | not null
    machine_id  | character
 varying(4)           |
 not null
    workorder   | character
 varying(8)           |
 not null
    operation   |
 integer             
           | not null
    bartype     |
 character varying(10)          |
 not null
    clockin     |
 timestamp(0) without time zone | not null
    clockout    | timestamp(0)
 without time zone | default NULL::timestamp without time
 zone
    comments    | character
 varying(255)         | default
 NULL::character varying
   Indexes:
       jobclock_pkey PRIMARY KEY, btree
 (jobclock_id)
   ...
 
 I need to keep jobclock_id unique and not null, but I also
 need to
 ensure that no row is duplicated.  Is my best bet to
 drop the current
 primary key and make a primary key out of the columns that
 I want to
 ensure remain unique from row to row?
 
 Thanks.
 
 
 -- 
 Brandon
 
 -- 

It depends of a lot of variables, take two stage:

Stage 1
one  employee_id can use some machine_id create you can create a unique key to 
employee_id


Stage 2
one  employee_id can use one machine_id create you can create a unique key to 
employee_id,machine_id

is a example, but i think you have to normalize the table




-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general