How to insert data to MySQL having auto incremented primary key?

后端 未结 5 763
一生所求
一生所求 2020-11-29 20:23

I\'ve created a table with a primary key and enabled AUTO_INCREMENT, how do I get MYSQL use AUTO_INCREMENT?

CREATE TABLE IF NOT EXI         


        
相关标签:
5条回答
  • In order to take advantage of the auto-incrementing capability of the column, do not supply a value for that column when inserting rows. The database will supply a value for you.

    INSERT INTO test.authors (
       instance_id,host_object_id,check_type,is_raw_check,
       current_check_attempt,max_check_attempts,state,state_type,
       start_time,start_time_usec,end_time,end_time_usec,command_object_id,
       command_args,command_line,timeout,early_timeout,execution_time,
       latency,return_code,output,long_output,perfdata
    ) VALUES (
       '1','67','0','0','1','10','0','1','2012-01-03 12:50:49','108929',
       '2012-01-03 12:50:59','198963','21','',
       '/usr/local/nagios/libexec/check_ping  5','30','0','4.04159',
       '0.102','1','PING WARNING -DUPLICATES FOUND! Packet loss = 0%, RTA = 2.86 ms',
       '','rta=2.860000m=0%;80;100;0'
    );
    
    0 讨论(0)
  • 2020-11-29 20:40

    The default keyword works for me:

    mysql> insert into user_table (user_id, ip, partial_ip, source, user_edit_date, username) values 
    (default, '39.48.49.126', null, 'user signup page', now(), 'newUser');
    ---
    Query OK, 1 row affected (0.00 sec)
    

    I'm running mysql --version 5.1.66:

    mysql  Ver 14.14 Distrib **5.1.66**, for debian-linux-gnu (x86_64) using readline 6.1
    
    0 讨论(0)
  • 2020-11-29 20:49

    Set the auto increment field to NULL or 0 if you want it to be auto magically assigned...

    0 讨论(0)
  • 2020-11-29 20:52

    I see three possibilities here that will help you insert into your table without making a complete mess but "specifying" a value for the AUTO_INCREMENT column, since you are supplying all the values you can do either one of the following options.

    First approach (Supplying NULL):

    INSERT INTO test.authors VALUES (
     NULL,'1','67','0','0','1','10','0','1','2012-01-03 12:50:49','108929',
     '2012-01-03 12:50:59','198963','21','',
     '/usr/local/nagios/libexec/check_ping  5','30','0','4.04159',
     '0.102','1','PING WARNING -DUPLICATES FOUND! Packet loss = 0%, RTA = 2.86 ms',
     '','rta=2.860000m=0%;80;100;0'
    );
    

    Second approach (Supplying '' {Simple quotes / apostrophes} although it will give you a warning):

    INSERT INTO test.authors VALUES (
     '','1','67','0','0','1','10','0','1','2012-01-03 12:50:49','108929',
     '2012-01-03 12:50:59','198963','21','',
     '/usr/local/nagios/libexec/check_ping  5','30','0','4.04159',
     '0.102','1','PING WARNING -DUPLICATES FOUND! Packet loss = 0%, RTA = 2.86 ms',
     '','rta=2.860000m=0%;80;100;0'
    );
    

    Third approach (Supplying default):

    INSERT INTO test.authors VALUES (
     default,'1','67','0','0','1','10','0','1','2012-01-03 12:50:49','108929',
     '2012-01-03 12:50:59','198963','21','',
     '/usr/local/nagios/libexec/check_ping  5','30','0','4.04159',
     '0.102','1','PING WARNING -DUPLICATES FOUND! Packet loss = 0%, RTA = 2.86 ms',
     '','rta=2.860000m=0%;80;100;0'
    );
    

    Either one of these examples should suffice when inserting into that table as long as you include all the values in the same order as you defined them when creating the table.

    0 讨论(0)
  • 2020-11-29 20:57

    Check out this post

    According to it

    No value was specified for the AUTO_INCREMENT column, so MySQL assigned sequence numbers automatically. You can also explicitly assign NULL or 0 to the column to generate sequence numbers.

    0 讨论(0)
提交回复
热议问题