pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jim C. Nasby <jnasby@pervasive.com>
To: Christopher Kings-Lynne <chriskl@familyhealth.com.au>
Cc: R, Rajesh (STSD) <rajesh.r2@hp.com>
Cc: pgsql-hackers@postgresql.org
Cc: pgsql-performance@postgresql.org
Subject: Re: Query in SQL statement
Date: Fri, 30 Sep 2005 18:48:53 -0500
Message-ID: <20050930234853.GT40138@pervasive.com> (raw)
In-Reply-To: <433BEC06.40004@familyhealth.com.au>
References: <5CBFB210D9870F40B9E5A0FBD31F3A770283AC48@bgeexc01.asiapacific.cpqcorp.net>
	<433BEC06.40004@familyhealth.com.au>

On Thu, Sep 29, 2005 at 09:28:38PM +0800, Christopher Kings-Lynne wrote:
> 
> >CREATE SEQUENCE ai_id;
> >CREATE TABLE badusers (
> >  id int DEFAULT nextval('ai_id') NOT NULL,
> >  UserName varchar(30),
> >  Date  datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
> >  Reason varchar(200),
> >  Admin varchar(30) DEFAULT '-',
> >  PRIMARY KEY (id),
> >  KEY UserName (UserName),
> >  KEY Date (Date)
> >);
> >
> >
> >Am always getting foll. Errors,
> >
> >ERROR:  relation "ai_id" already exists
> >ERROR:  syntax error at or near "(" at character 240
> 
> You have just copied the Mysql code to Postgresql.  It will in no way 
> work.  Your default for 'Date' is illegal in postgresql and hence it 
> must allow NULLs.  There is no such thing as a 'datetime' type.  There 
> is no such thing as 'Key'.  Also your mixed case identifiers won't be 
> preserved.  You want:
> 
> CREATE TABLE badusers (
>   id SERIAL PRIMARY KEY,
>   UserName varchar(30),
>   Date  timestamp,
>   Reason varchar(200),
>   Admin varchar(30) DEFAULT '-'
> );
> 
> CREATE INDEX UserName_Idx ON badusers(Username);
> CREATE INDEX Date_Idx ON badusers(Date);

Actually, to preserve the case you can wrap everything in quotes:
CREATE ...
    "UserName" varchar(30)

Of course that means that now you have to do that in every statement
that uses that field, too...

SELECT username FROM badusers
ERROR

SELECT "UserName" FROM badusers
bad user

I suggest ditching the CamelCase and going with underline_seperators.
I'd also not use the bareword id, instead using bad_user_id. And I'd
name the table bad_user. But that's just me. :)
-- 
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461



view thread (10+ messages)  latest in thread

Message-ID: <20050930234853.GT40138@pervasive.com>
Permalink:  ../20050930234853.GT40138@pervasive.com/
Also on:    postgresql.org/message-id/20050930234853.GT40138@pervasive.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: jnasby@pervasive.com, chriskl@familyhealth.com.au, rajesh.r2@hp.com, pgsql-hackers@postgresql.org
  Subject: Re: Query in SQL statement
  In-Reply-To: <20050930234853.GT40138@pervasive.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox