mysql数据库为什么设置了主键并且主键设置了为自动增长,但是在插入数据的时候还是要插入主键否则就报错.如:一个student的表,设置了id为主键且为自动增长,在向表中插入数据的时候还是必须插入id的值,否则就报错。
我做个示例给你看下,希望对你有帮助
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。
这样的话,也就是说student后面要跟上所有字段的名字才能插入数据了,那要是student后的字段很多的话假如有30个字段,插入数据的时候那也得一一列出来,就像insert into student(stuname,age,.......)values('张三',23........)了对吧?那就不能直接insert into student values('张三',23.......)吗,id已经是主键了,且自动增长,为什么还是会报错呢?
@雾中雪人: 这个应该是MySQL跟MS SQL的差异吧,Oracle里面也没有自增长,而且要实现类似的效果还得建序列
可能你设置的有问题,如果主键是自动增长,插入数据时是不需要管的
既然是主键,又是自动增长,插入数据的时候肯定不要再插入id值了,直接插入其它的字段值就行了!
你表建错了吧
create table student ( id int identity(1,1) primary key,...)
或者 插入数据有误
innsert into student(...) values (...)
这种问题应该不会存在的。。
不知道问题有没解决啊?
innsert into student(...) values (...)这个student后面接的是所有除了id的字段名吗?不是可以不用输入字段名,直接insert into student values('studentname','studentage'.....),这样操作可以吗?只是在值里面不输入id?
@雾中雪人: 后面的字段填( 除 自动增长的ID 字段 就可以了)
你可以试试 insert into student(name,age) values (@name,@age) 这种方法
@呓语: 那要是很多字段名字那不得写很长了?
@雾中雪人: 只是检测下 到底是什么地方出错了 (如果那种方法还不可以,就是表有问题了)