OK thanks I get it now.

I believe we should continue leave out a drop_primary_key
[:a, :b, :c]  form the migrations then.

If someone (ie me) really needed to do it then I can use SQL, which
would need to be different for mysql and pgsql.


On Dec 6, 4:44 pm, Jeremy Evans <[email protected]> wrote:
> On Dec 6, 2:26 pm, John W Higgins <[email protected]> wrote:
>
> > On Mon, Dec 6, 2010 at 1:37 PM, Jim Morris <[email protected]> wrote:
> > > Hi,
>
> > > WRT this bug entry
> > >http://code.google.com/p/ruby-sequel/issues/detail?id=317
>
> > > I thought a primary key with multiple columns is more like an index
> > > not a constraint.
>
> > Primary Keys are always a constraint. They fall within the family of Unique
> > Keys.
>
> > However, most implementations will setup both the constraint and an index
> > because clearly one is normally interested in both.
>
> Correct.  For PostgreSQL, the psql CLI tool shows you the index and
> not the constraint, but if you attempt to drop the index, it will
> complain that the constraint exists.  If you drop the constraint, it
> implicitly drops the index:
>
> sequel_test=# CREATE TABLE a(a integer primary key);
> NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index
> "a_pkey" for table "a"
> CREATE TABLE
> sequel_test=# \d a
>        Table "public.a"
>  Column |  Type   | Modifiers
> --------+---------+-----------
>  a      | integer | not null
> Indexes:
>     "a_pkey" PRIMARY KEY, btree (a)
>
> sequel_test=# DROP INDEX a_pkey;
> ERROR:  cannot drop index a_pkey because constraint a_pkey on table a
> requires it
> HINT:  You can drop constraint a_pkey on table a instead.
> sequel_test=# ALTER TABLE a DROP CONSTRAINT a_pkey;
> ALTER TABLE
> sequel_test=# \d a
>        Table "public.a"
>  Column |  Type   | Modifiers
> --------+---------+-----------
>  a      | integer | not null

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to