sql server数据库 主键怎么自动生成

来源:百度知道 编辑:UC知道 时间:2024/06/27 16:11:27
表1-1 表名: student(学生信息表)
字段名称 类 型 宽 度 允许空值 主 键 说 明
sno char 9 NOT NULL 是 学生学号 061201204
sname char 10 NOT NULL 学生姓名
sex char 2 NULL 学生性别 填1 或 2
native char 20 NULL 籍贯
birthday date 6 NULL 学生出生日期
dno char 2 NULL 学生所在院系编号(外键
spno char 2 NULL 专业代码
Picture Char 40 Not null 照片
Zzmm Char 2 Null 政治面貌 // 团员
classno char 4 NULL 班级号
entime date 6 NULL 学生入校时间 //
home varchar 50 NULL 学生家庭住址
tel varchar 40 NULL 学生联系电话

表结构如上
当我的数据库里有200条记录了 我要新插入一条记录时 用insert的时候 学号(主键)怎么确定 我看网上说 定义int 类型的主键设置标识为是 就能自动加1 但是 如果 主键就是 字符型的 还有其他方法 自动生成吗
原来学数据库原理时候 老师都是像上面那样建的表

主键和自动编号不是一个意思,自动编号在sqlserver选中为标识 就可以自动加一,主键也可以定义,但不是一个意思,主键即使你定义,你不调设为标识不会自动加一,在oracle自动编号字符串类型的

数据库中要自动生成主键,只能是int类型。你要自动生成学号主键的话,可以自己编写程序实现。

默认值定义成一个函数呗。
自定义一个函数
create function getid()
returns varchar(50)
as
begin
---create @yourid here

return @yourid
end

把字段的默认值设为dbo.getid()

可以通过SQL语句来实现 ,
举个例子你看看:
declare @sno char (10) ,@id int
set @sno=(select top 1 sno from student order by sno desc)
set @id=convert(int,@sno)
insert into student (sno) values(@id+1)