在敲机房的过程中,对于数据库这块学到了很多新的知识,类似于“存储过程”、“触发器”、“视图”,这“三大件”在机房重构的时候都有新的认识,就像今天中午和李芬聊天时候聊到了学习是一个迭代的过程,不要指望一次就把知识学会、学以致用;也不要因为感觉在学的过程中不够扎实而感到恐惧、厌学,要知道每个人的情况都是差不多的,没有人一次就学的特别扎实,So你需要认识到,在我们学习的过程中什么是“不怕不知道,就怕不知道”。
话说多了,下面看问题:
这是我的WorkLog_Info表,就是用于在管理员下拉菜单下“教师工作记录查询”对应的数据表,其中第一个字段Serial的设计理念是每当一次用户登录系统在该表中记录一条记录,而且每条记录有一个自增的字段,Serial就是这个自增的字段。
如何设置这个标识字段呢?
方法一:手动设置
(1)单击菜单栏,选择“工具”,单击“选项”,选择“designers”,将“阻止保存要求重新创建表的更改”之前的对勾去掉。
(2)在“对象资源管理器”中右击相应的表,单击“设计”,选中如上图所示的要作为“标识字段”的一列(前提:这一列的数据类型为“INT”,我就因为数据类型为“varchar(20)实验了好几次才发现错误”)。
(3)在下方的“列属性”中将“标识规范”选择为“是”,切记如果相应字段的数据类型为非INT,这个属性将是“只读”属性。同时将“标识增量”、“标识种子”设置为相应的值。(4)单击保存。
解释:“标识增量”:序列的初始值。
“标识种子”:序列增长的步长。
一般情况两者都设置为“1”。
方法二:代码设置
这种方法的核心在于“IDENTITY”的设置
(1)创建一张数据表或者修改一张数据表:CREATE TABLE ZZH_JF1( StdNo INT IDENTITY(1,1) PRIMARY KEY, StdName VARCHAR(50) ) GO
创建一张只有学号和学生姓名的数据表,如上代码,IDENTITY(1,1)即代表插入的序列号从1开始,步长为1.
验证:INSERT INTO ZZH_JF1(StdName) VALUES (‘张振华’); INSERT INTO ZZH_JF1(StdName) VALUES (‘张国强’); INSERT INTO ZZH_JF1(StdName) VALUES (‘张跃进’)
结果如下:
SELECT * FROM ZZH_JF1实验成功!
但是需要注意: 当我把插入语句写成这样
INSERT INTO ZZH_JF1(StdNo,StdName) VALUES ('01','张振华');
会提示:
也就是说,在向数据库中添加记录的时候,自增字段就不要去管它了。
至于为什么要添加这样的一个字段,我个人觉得,(1)当设置一个递增序列之后,首先能够保证消息的唯一性,即使是内容相同的两条记录,通过记录号,可以将其区分;(2)当删除过之前的记录时候,序列号仍然递增,相当于不用将所有记录保存就可以看这个表存在过多少条记录。
Summary:
就像今天的这个“标识列自增”问题,在第一次机房的时候也遇到过这个问题,但是就放过了,这次重新拾起来,很简单的解决方法,但是为什么要把它写出来,我想对于我自己来说,更多的是一种不将就的学习习惯的养成,是一种对自我不断突破的记录,加油,我还可以做的更好。