首页 新闻 赞助 找找看

mysql数据库插入数据的问题

0
[已解决问题] 解决于 2013-09-03 10:43

mysql数据库为什么设置了主键并且主键设置了为自动增长,但是在插入数据的时候还是要插入主键否则就报错.如:一个student的表,设置了id为主键且为自动增长,在向表中插入数据的时候还是必须插入id的值,否则就报错。

雾中雪人的主页 雾中雪人 | 初学一级 | 园豆:200
提问于:2011-12-06 22:44
< >
分享
最佳答案
0

我做个示例给你看下,希望对你有帮助
1.在mysql里面建立一张学生表
use test;--我的数据库
create table student
(id int primary key auto_increment not null,
 stuname nvarchar(20) not null,
 age int not null
)

执行下然后插入数据:
insert into student(stuname,age) values('张三',23);
如果你写成(insert into student values('张三',23)会报错,列的数据库类型不匹配,因为我们这里定义的id是整型,而'张三'里面的是nvarchar。

奖励园豆:5
加百力 | 小虾三级 |园豆:533 | 2011-12-07 19:59

这样的话,也就是说student后面要跟上所有字段的名字才能插入数据了,那要是student后的字段很多的话假如有30个字段,插入数据的时候那也得一一列出来,就像insert into student(stuname,age,.......)values('张三',23........)了对吧?那就不能直接insert into student values('张三',23.......)吗,id已经是主键了,且自动增长,为什么还是会报错呢?

雾中雪人 | 园豆:200 (初学一级) | 2011-12-07 21:21

@雾中雪人: 这个应该是MySQL跟MS SQL的差异吧,Oracle里面也没有自增长,而且要实现类似的效果还得建序列

加百力 | 园豆:533 (小虾三级) | 2011-12-07 21:24
其他回答(3)
0

可能你设置的有问题,如果主键是自动增长,插入数据时是不需要管的

artwl | 园豆:16736 (专家六级) | 2011-12-07 09:20
0

既然是主键,又是自动增长,插入数据的时候肯定不要再插入id值了,直接插入其它的字段值就行了!

飘雪媛媛 | 园豆:210 (菜鸟二级) | 2011-12-07 11:57
0

你表建错了吧

create table student ( id int identity(1,1) primary key,...)

或者 插入数据有误

innsert into student(...) values (...)

这种问题应该不会存在的。。

不知道问题有没解决啊?

呓语 | 园豆:90 (初学一级) | 2011-12-07 13:35

innsert into student(...) values (...)这个student后面接的是所有除了id的字段名吗?不是可以不用输入字段名,直接insert into student values('studentname','studentage'.....),这样操作可以吗?只是在值里面不输入id?

支持(0) 反对(0) 雾中雪人 | 园豆:200 (初学一级) | 2011-12-07 14:08

@雾中雪人: 后面的字段填( 除 自动增长的ID 字段 就可以了)

你可以试试 insert into student(name,age) values (@name,@age) 这种方法

 

支持(0) 反对(0) 呓语 | 园豆:90 (初学一级) | 2011-12-07 14:13

@呓语: 那要是很多字段名字那不得写很长了?

支持(0) 反对(0) 雾中雪人 | 园豆:200 (初学一级) | 2011-12-07 14:16

@雾中雪人: 只是检测下 到底是什么地方出错了 (如果那种方法还不可以,就是表有问题了)

支持(0) 反对(0) 呓语 | 园豆:90 (初学一级) | 2011-12-07 14:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册