Re: Stupid Question - Mailing list pgsql-sql

From Nils Zonneveld
Subject Re: Stupid Question
Date
Msg-id 3BB99732.4BBC83C@mbit.nl
Whole thread Raw
In response to Stupid Question  ("Rebekah Kirk" <rebekah.kirk@patersons.net>)
List pgsql-sql

Rebekah Kirk wrote:
> 
> I want to create a table and for whatever reason it will not accept the
> command, can anyone say what is wrong as I am very new to Postgres, thanks:
> 


> CREATE TABLE cmpnycontacts (
> ContactNo integer(10) NOT NULL SERIAL,
> CmpnyNo varchar(6) NOT NULL,
> FirstName varchar(30) NOT NULL,
> Surname varchar(30) NOT NULL,
> Phone varchar(20) NOT NULL,
> Mobile varchar(20) NOT NULL,
> Email varchar(40) NOT NULL,
> Country char(2) NOT NULL,
> CONSTRAINT cmpnycontacts_pkey PRIMARY KEY (ContactNo)
> );


Your problem is with the ContactNo, two things:
- there is no specified length for 'integer', so integer(10) would fail
(integer is defined IIRC as int4, meaning an integer that uses four
bytes to store its values).
- the SERIAL keyword defines a integer coupled to a sequence. 

The following statement would work:

CREATE TABLE cmpnycontacts (
ContactNo SERIAL primary key,
CmpnyNo varchar(6) NOT NULL,
FirstName varchar(30) NOT NULL,
Surname varchar(30) NOT NULL,
Phone varchar(20) NOT NULL,
Mobile varchar(20) NOT NULL,
Email varchar(40) NOT NULL,
Country char(2) NOT NULL
);

Its looks like this table has a relationship to a table that holds the
company data. Since PostgreSQL supports referential integrity you could
extend CmpnyNo in the following way:

CmpnyNo varchar(6) not null references Company                            on update cascade
ondelete cascade,
 


Hope this helps,

Nils Zonneveld

-- 
Alles van waarde is weerloos
Lucebert


pgsql-sql by date:

Previous
From: "Robin's PG-SQL List"
Date:
Subject: Re: Aggregate Aggravation
Next
From: Tom Lane
Date:
Subject: Re: strange query execution times