No announcement yet.

Autoincrement value

  • Filter
  • Time
  • Show
Clear All
new posts

  • Autoincrement value

    Hello All,

    I have a form where I need to know the ID field value that is a Autoincrement value on the database, that before the register is being inserted. Is this posible? how?
    Best Regards,

  • #2
    Re: Autoincrement value

    The ID is created by the database ??
    Then put your code in OnAfterInsert Event. It depends on the database how to get the last value of
    autoincrement field. For example in mysql it's

    $Last_ID = mysql_insert_id();

    Hope this helps

    Best regards


    • #3
      Re: Autoincrement value

      If you want to show the value in the form even before the insert statement is fired to the database, then you should not use auto_increment. You should use a function in the form to get the next id.

      This function could just get the max(id) + 1 using a query, but then you might get in trouble with multiple concurrent users. The function could also insert a record in a table that holds just the id's. In this table insert record, auto_increment will generate new id, and retrieve this new id from table.


      • #4
        Re: Autoincrement value

        There are basically no solution. Why?
        Autoincrement fields simply counting forward. Thus, the RedordID be generated. So in the ideal case 1,2,3, ...
        Now do you delete records, create gaps in the numbering. So 1,3,4,7. If we add to this list to a record, creating 1,3,4,7,8. The stands autorincrementwert to 8 and the next record would be 9th Deletes one now 8, gets the next record anyway 9
        Übersetzung von Deutsch nach Englisch
        SELECT max (id) from table provides only 7
        SELECT max (id) +1 from table 8 provides
        Insert a reocrd creates an ID 9

        Goes to work with DBMS in which the sequences better. Eg. Oracle
        SELECT FROM nextValue sequencename
        returns the next value of the sequence. Here you can get the sequence even to use the gaps in the numbering to fill again. (I think). This model has the disadvantage that you need for each table to determine the onBEforeInsert-trigger to calculate the RecordId and set. In MySQL, you need not do.
        What I still care about is, Why do you want to know before you insert the ID? I can not imagine a case where you might need it.


        • #5
          Re: Autoincrement value

          @Chopper64: Oracle sequences cannot be used to fill gaps, they always pick the max + 1.


          • #6
            Re: Autoincrement value

            Can it be this is so. My latest Oracle database is three years ago. I seem to remember that your sequence does not get the maximum value of the table. KönnenSie not, because they have no connection to the table but simply include autonomous.

            CREATE SEQUENCE sequence_name
              MINVALUE value
              MAXVALUE value
              START WITH value
              INCREMENT BY value
              CACHE value;
            INCREMENT BY value also shows that

            INCREMENT BY 100
            steps may be numbered in 100.
            SELECT seq.nextval from dual
            returns the next value. Dabi economic incremented the sequence.
            SELECT currvalue From Dual
            returns the current value of the sequence.

            For MYSQL:
            In order to get the next auto index value, you should run the following query:
            view source print?
            SHOW TABLE STATUS LIKE `tablename`
            MySQL returned (of course with existing table with that name) is a line with many values​​, among other things, collation, coding, date of last change and other includes. What we have read here is the value in the column Auto_increment, which includes our value.