Thread

  1. Still the problem with the autoincrement field

    Marc Eggenberger <me@ieo.ch> — 1998-10-06T09:29:39Z

    Hi there.
    
    As two people said I created now a sequence .... I have the following now:
    
    Database    = jobforum
     +------------------+----------------------------------+----------+
     |  Owner           |             Relation             |   Type   |
     +------------------+----------------------------------+----------+
     | postgres         | offene_stellen                   | table    |
     | postgres         | seq                              | sequence |
     +------------------+----------------------------------+----------+
    
    Table    = offene_stellen
    +----------------------------------+----------------------------------+-------+
    |              Field               |              Type                | Length|
    +----------------------------------+----------------------------------+-------+
    | id                               | int4 default nextval ( 'seq' )   |     4 |
    | bezeichnung                      | char()                           |   100 |
    | arbeitsort                       | char()                           |   100 |
    | berater                          | char()                           |   100 |
    | gefordert                        | char()                           |  1000 |
    | geboten                          | char()                           |  1000 |
    +----------------------------------+----------------------------------+-------+
    
    Table    = seq
    +----------------------------------+----------------------------------+-------+
    |              Field               |              Type                | Length|
    +----------------------------------+----------------------------------+-------+
    | sequence_name                    | name                             |    32 |
    | last_value                       | int4                             |     4 |
    | increment_by                     | int4                             |     4 |
    | max_value                        | int4                             |     4 |
    | min_value                        | int4                             |     4 |
    | cache_value                      | int4                             |     4 |
    | is_cycled                        | char                             |     1 |
    | is_called                        | char                             |     1 |
    +----------------------------------+----------------------------------+-------+
    
    
    and when I want to add some data .. how to do this?
    when I do the following:
    
    insert into offene_stellen values ('', 'Maurer', 'Buchs', 'Rheinhalter Claudio', 'flexibilitaet', 'gutes Team');
    
    the id field is always 0, and when I do a:
    
    insert into offene_stellen values ('Maurer', 'Buchs', 'Rheinhalter Claudio', 'flexibilitaet', 'gutes Team');
    
    I get a:
    ERROR:  pg_atoi: error in "Maurer": can't parse "Maurer"
    
    
    How do I add data, so that the id field is autoincremented?
    
    
    --
    mit freundlichen Gruessen
    =====================================
    Eggenberger Marc            me@ieo.ch
    Leimbachstr. 56        Tel 01/4802800
    8041 Zuerich            Fax 01/4802801
    =====================================
    
    
  2. Re: [GENERAL] Still the problem with the autoincrement field

    Kevin Heflin <kheflin@shreve.net> — 1998-10-06T09:57:01Z

    On Tue, 6 Oct 1998, Marc Eggenberger wrote:
    
    > 
    > and when I want to add some data .. how to do this?
    > when I do the following:
    > 
    > insert into offene_stellen values ('', 'Maurer', 'Buchs', 'Rheinhalter Claudio', 'flexibilitaet', 'gutes Team');
    > 
    > the id field is always 0, and when I do a:
    > 
    > insert into offene_stellen values ('Maurer', 'Buchs', 'Rheinhalter Claudio', 'flexibilitaet', 'gutes Team');
    
    
    Not exactly sure what the problem is here.. but you should not have to
    call on the increment sequence at all durring the insert.. it's automatic
    
    Maybe it's because you are not specifying which fields to insert into like
    so:
    
    insert into table_name (field1, field2, field3, field4)
    values ('data1', 'data2', 'data3', 'data4');
    
    Kevin
    
    
    --------------------------------------------------------------------
    Kevin Heflin          | ShreveNet, Inc.      | Ph:318.222.2638 x103
    VP/Mac Tech           | 333 Texas St #619    | FAX:318.221.6612
    kheflin@shreve.net    | Shreveport, LA 71101 | http://www.shreve.net
    --------------------------------------------------------------------
    
    
    
  3. Re: [GENERAL] Still the problem with the autoincrement field

    Herouth Maoz <herouth@oumail.openu.ac.il> — 1998-10-06T10:08:23Z

    At 11:29 +0200 on 6/10/98, Marc Eggenberger wrote:
    
    
    > when I do the following:
    >
    > insert into offene_stellen values ('', 'Maurer', 'Buchs', 'Rheinhalter
    >Claudio', 'flexibilitaet', 'gutes Team');
    >
    > the id field is always 0, and when I do a:
    >
    > insert into offene_stellen values ('Maurer', 'Buchs', 'Rheinhalter
    >Claudio', 'flexibilitaet', 'gutes Team');
    >
    > I get a:
    > ERROR:  pg_atoi: error in "Maurer": can't parse "Maurer"
    >
    >
    > How do I add data, so that the id field is autoincremented?
    
    Simple. NEVER do an insert without mentioning the field names. It is never
    advisable to rely on the order of the fields in the database, in any case.
    In this case, you simply must not enter a value to the field, so that in
    knows that it should insert the default value.
    
    So, what you should do is:
    
    INSERT INTO offene_stellen (
        bezeichnung,
        arbeitsort,
        berater
        gefordert
        geboten
    )
    VALUES (
        'Maurer',
        'Buchs',
        'Rheinhalter Claudio',
        'flexibilitaet',
        'gutes Team'
    );
    
    This works, and it also makes sure that if you change the schema such that
    the order of the fields is different or there are new fields between the
    existing fields, the query won't break.
    
    But if you insist on not mentioning field names, I think inserting a NULL
    rather than a value in the id field should work. I won't swear on it, but I
    think you should make that field NOT NULL in the table definition.
    
    Remember that '' (The empty string) is NOT THE SAME THING as a NULL. The
    empty string is just a string with length 0. NULL is "There is nothing
    here".
    
    Herouth
    
    --
    Herouth Maoz, Internet developer.
    Open University of Israel - Telem project
    http://telem.openu.ac.il/~herutma