如何将数据插入到具有自动递增主键的MySQL?
我用主键创build了一个表并启用了AUTO_INCREMENT
,我怎样才能让MYSQL使用AUTO_INCREMENT
?
CREATE TABLE IF NOT EXISTS test.authors ( hostcheck_id INT PRIMARY KEY AUTO_INCREMENT, instance_id INT, host_object_id INT, check_type INT, is_raw_check INT, current_check_attempt INT, max_check_attempts INT, state INT, state_type INT, start_time datetime, start_time_usec INT, end_time datetime, end_time_usec INT, command_object_id INT, command_args VARCHAR(25), command_line VARCHAR(100), timeout int, early_timeout INT, execution_time DEC(18,5), latency DEC(18,3), return_code INT, output VARCHAR(50), long_output VARCHAR(50), perfdata VARCHAR(50) );
这是我使用的查询,我已经尝试“”和“1”的第一个值,但它不工作。
INSERT INTO test.authors VALUES ('1','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');
为了利用列的自动递增function,在插入行时不要为该列提供值。 数据库将为您提供一个值。
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' );
设置自动增量字段为NULL或0,如果你想自动神奇地分配…
default
关键字适用于我:
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)
我正在运行mysql --version
5.1.66:
mysql Ver 14.14 Distrib **5.1.66**, for debian-linux-gnu (x86_64) using readline 6.1
看看这个post
据此
AUTO_INCREMENT列没有指定值,所以MySQL自动分配序列号。 您也可以明确地将NULL或0分配给列以生成序列号。