MySql主键自增长。在插入语句时必须指定ID,否则就出错, 以下是源码,请各位高手给看看是哪里错了。
CREATETABLE`new_mobile`(`id`int(11)NOTNULLauto_increment,`mobile_name`varchar(30)NOTN...
CREATE TABLE `new_mobile` (
`id` int(11) NOT NULL auto_increment,
`mobile_name` varchar(30) NOT NULL,
`phone_name` varchar(30) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 展开
`id` int(11) NOT NULL auto_increment,
`mobile_name` varchar(30) NOT NULL,
`phone_name` varchar(30) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 展开
3个回答
展开全部
如果指定列插入应该不会有问题
insert into new_mobile(mobile_name,phone_name,`date`)values('11','22','2011-07-13');
如果不指定列的话,自增键插入NULL
insert into new_mobile values(null,'11','22','2011-07-13');
或
insert into new_mobile(id,mobile_name,phone_name,`date`)values(null,'11','22','2011-07-13');
不要给id这一列插入具体的数值,否则自增无效
另外你的表结构里date这一列以后最好不要叫这个列名,因为date本身是sql关键字,有些程序员在写sql语句的时候,不喜欢在列名两边加上``,这时候sql语句就要报错了,所以为了避免这样的麻烦,不要用sql关键字做列名
insert into new_mobile(mobile_name,phone_name,`date`)values('11','22','2011-07-13');
如果不指定列的话,自增键插入NULL
insert into new_mobile values(null,'11','22','2011-07-13');
或
insert into new_mobile(id,mobile_name,phone_name,`date`)values(null,'11','22','2011-07-13');
不要给id这一列插入具体的数值,否则自增无效
另外你的表结构里date这一列以后最好不要叫这个列名,因为date本身是sql关键字,有些程序员在写sql语句的时候,不喜欢在列名两边加上``,这时候sql语句就要报错了,所以为了避免这样的麻烦,不要用sql关键字做列名
展开全部
mysql> CREATE TABLE `new_mobile` (
-> `id` int(11) NOT NULL auto_increment,
-> `mobile_name` varchar(30) NOT NULL,
-> `phone_name` varchar(30) NOT NULL,
-> `date` date NOT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.13 sec)
mysql> INSERT INTO `new_mobile` (
-> `mobile_name`,
-> `phone_name`,
-> `date`
-> ) VALUES (
-> 'A',
-> 'B',
-> CURRENT_DATE()
-> );
Query OK, 1 row affected (0.04 sec)
mysql> select * from `new_mobile`;
+----+-------------+------------+------------+
| id | mobile_name | phone_name | date |
+----+-------------+------------+------------+
| 1 | A | B | 2011-07-13 |
+----+-------------+------------+------------+
1 row in set (0.00 sec)
请问你的 SQL 是像上面这样写的么?
-> `id` int(11) NOT NULL auto_increment,
-> `mobile_name` varchar(30) NOT NULL,
-> `phone_name` varchar(30) NOT NULL,
-> `date` date NOT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.13 sec)
mysql> INSERT INTO `new_mobile` (
-> `mobile_name`,
-> `phone_name`,
-> `date`
-> ) VALUES (
-> 'A',
-> 'B',
-> CURRENT_DATE()
-> );
Query OK, 1 row affected (0.04 sec)
mysql> select * from `new_mobile`;
+----+-------------+------------+------------+
| id | mobile_name | phone_name | date |
+----+-------------+------------+------------+
| 1 | A | B | 2011-07-13 |
+----+-------------+------------+------------+
1 row in set (0.00 sec)
请问你的 SQL 是像上面这样写的么?
追问
这种写法我也做了,还是不行,
追答
把你执行的SQL语句, 与报错信息,贴出来,让大家看看, 好帮你分析,具体是什么原因。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
插入记录时,id你value就这样:‘’。我插入时不忘id的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询