文档库 最新最全的文档下载
当前位置:文档库 › SQL Server触发器和游标

SQL Server触发器和游标

SQL Server触发器和游标
SQL Server触发器和游标

实验成绩

《数据库系统原理及应用》

专业班级: 计科卓1101

学号: 201116910213

姓名: 孙宏图

指导教师: 苏小玲

2013 年11 月29 日

实验七名称:SQL Server触发器和游标

一、实验内容及要求

1. 创建满足要求的DML触发器

2. 创建满足要求的游标

二、实验目的

掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。

三、实验步骤及运行结果

1.创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触

发器执行情况。

任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。

USE 学生选课

GO

CREATE TRIGGER ins_tri ON 学生

AFTER INSERT

AS

IF EXISTS(SELECT * FROM INSERTED WHERE 专业= ‘计算机’ OR专业= ‘信息管理’OR专业= ‘数学’ OR专业= ‘通信工程’ ) Print ‘插入成功’

ELSE ROLLBACK Print'你添加的专业受限'

任务2:限制每个学期所开设的课程总学分在20~30范围内。USE学生选课

GO

CREATE TRIGGER ins_tri2ON课程

AFTER INSERT,UPDATE

AS

BEGIN

DECLARE@su int

SELECT@su=SUM(学分)FROM课程

IF@su= 30

ROLLBACK

Print'课程已满'

END

任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)USE学生选课

GO

CREATE TRIGGER ins_tri3ON选课

AFTER INSERT

AS

BEGIN

DECLARE@s int

SELECT@s = count(课程号)FROM选课

IF@s= 6

ROLLBACK

Print'所选课程已达6门,不能选更多'

END

任务4:限制不能删除有人选的课程

USE学生选课

GO

CREATE TRIGGER limit ON课程

FOR DELETE

AS

IF EXISTS (SELECT 课程.课程号FROM 课程 JOIN 选课 ON 课程.课程号 = 选课.课程号)

ROLLBACK

Print ‘该课程有人选,不能删除’

四、实验体会或实验中遇到的问题

触发器的本质是存储过程,主要作用就是添加约束条件,相比较在建表时加入约束条件,触发器有更高的灵活性,而且作为存储过程,执行效率自然更高。对于本次试验,遇到的小问题通过查阅教材和课件,都解决了,另外,在表连接时,对于前面的知识有些生疏了,要加强复习了。

触发器 一﹕触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 二﹕SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后﹐与该触发器相关的这两个表也被删除。Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。 三﹕Instead of 和After触发器 SQL Server提供了两种触发器﹕Instead of 和After 触发器。 这两种触发器的差别在于他们被激活的操作﹕ Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在After 触发器被激活之前发生。After触发器只能用于表。一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。 INSTEAD OF触发器被用于更新那些没有办法通过正常方式更新的视图。通常不能在一个基于连接的视图上进行DELETE操作,可以编写一个INSTEAD OF DELETE触发器来实现删除。可以访问那些如果视图是一个真正的表时已经被删除的数据行,它将把删除的行存储在deleted临时表中。 本次练习将通过具体的例子介绍如何使用INSTEAD OF触发器,使读者掌握INSTEAD OF 触发器的使用方法。 向student表中插入数据时,检查学号是否存在于student表中,如存在则进行插入操作,否则就不插入,具体语句如下所示: CREATE TRIGGER [checkid] ON dbo.student INSTEAD OF insert AS IF NOT EXISTS(SELECT * FROM dbo.student WHERE ID=(SELECT ID FROM INSERTED)) BEGIN ROLLBACK TRANSACTION PRINT '要处理记录的学号不存在!' END ELSE BEGIN INSERT NTO dbo.student select * from inserted

SQLSERVER数据库操作 ******操作前,请确定SQL的服务已经开启******** 一:登录进入sql数据库 1、开始---所有程序---Microsoft SQL Server 2005---SQL Server Management Studio Express 2、此时出现“连接到服务器”的对话框, “服务器名称”设置为SQL数据库所在机器的IP地址 “身份验证”设置为SQL Server身份验证或者Windows 身份验证 填写登录名和密码后,点击“连接”按钮,即可进入到SQL数据库操作界面。 二:新建数据库 登录进去后,右击“数据库”,选择—“新建数据库” 设置数据库名称,在下面的选项卡中还可以设置数据库的初始大小,自动增长,路径。 点击确定,一个数据库就建好了。 三:如何备份的数据库文件。 登录进入后,右击相应的需要备份数据库----选择“任务” 目标下的备份到,点击“添加”按钮可以设置备份数据库保存的路径。 四:如何还原备份的数据库文件。(以本地机器为例子) 1、设置服务器名称,点击右边的下拉框的三角,选择“浏览更多…”。 此时出现查找服务器对话框,选择“本地服务器”---点开“数据库引擎”前面 的三角---选中出现的服务器名称—确定。 (注:可以在“网络服务器”选项卡中设置网络服务器) 2、设置身份验证,选择为“windows身份验证” 3、点击连接按钮,进入数据库管理页面 4、右击“数据库”,选择“还原数据库”,出现还原数据库的对话框 还原的目标----目标数据库,这里设置数据库的名字 还原的源----选择“源设备”,在弹出的对话框中点击“添加”按钮,找到所备 份的数据库文件,确定。 5、此时,在还原数据库对话框中会出现所还原的数据库的信息。在前面选中所需还 原的数据库。确定。 6、为刚刚还原的数据库设置相应的用户。 a点开“安全性”---右击“登录名”---新建登录名 b 设置登录名(假如为admin),并设置为SQL Server身份验证,输入密码,去除 “强制实施密码策略”前的勾。 C 找到导入的数据库,右击此数据库----选择“属性”,在选择页中,点击“文件” 设置所有者,点击右边的按钮,选择“浏览”,找到相应的用户(如admin)。确 定。。 7、此时重新以admin的身份进入,就可操作相应的数据库。

数据库原理与应用 课程设计A报告 姓名:袁一帆学号:20121480 学院(系):管理学院专业:信息管理与信息系统

班级:12级信管1 班

襄阳迈博信息科技有限公司企业考勤管理系统 一、系统目标设计 1系统开发的总体任务是实现企业员工考勤管理的系统化、规范化、和自动化。 2能够和人事管理系统、工资管理系统相结合,真正实现企业高效、科学、现代化的员工管理。 二、开发实际思想 1尽量采用公司现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用公司现有资源,提高系统开发水平和应用效果的目的。 2员工考勤管理系统能够和考勤机相连接,从而完成自动、高效、科学的考勤信息输入。 3系统采用模块化程序设计方法,既便与系统功能的各种组合和修该,又便于未参与开发的技术维护人员补充、维护。 系统应具备数据库维护功能,即使根据用户需求进行数据的添加、删除、修改、被分等操作。 系统需求分析 1 考勤管理涉及企业人事管理的多个方面,如员工职务升迁、工资发放、奖金发放、员工医疗保险发放等等。本利自重的考勤管理系统需要完成功能主要有以下几点。 2 员工考勤信息处理。该莫完成员工考勤情况的输入、修改等操作。如果企业内有考勤机,可以将它的输出处理后,形成考勤管理系统考勤模块的

输入。 3 企业缺勤类型的设定。 4 企业考勤统计。该模块可对某个员工进行考勤情况的统计,生成统计报表。 5 缺勤时间,缺勤类型对工资的影响 6 缺勤时间,缺勤类型对升职的影响 数据字典 数据项 表1 名称员工编号 说明每个员工拥有唯一的编号 类型字符型 长度 4 有关数据存储员工基本信息存储 表2 名称员工姓名

信息学部 实验报告 课程名称:网络数据库 实验名称:游标、存储过程、触发器实验类型:□验证性□综合性□设计性实验日期: 学生姓名: 学号: 班级: 专业:信息管理与信息系统学部:信息学部 指导教师:康瑶 成绩: 评语: 2015 年—2016 年第二学期

实验五:游标、存储过程、触发器 实验内容: 在scott方案下完成如下实验内容: 1、用显式游标编写程序,程序的功能是:计算每一个部门的平均工资,输出部门名称dname及平均工资avg_sal。(利用scott方案下的emp表及dept表) 2、编写一个存储过程,此过程的功能是将scott方案下的emp表中工资大于1000的ename,job,sal的30%,comm插入表bonus中,要求用显示游标完成数据插入操作,然后编写PL/SQL程序执行此存储过程,并显示最终结果。 3、在scott方案下定义一个存储过程使用游标方式,根据emp表员工编号参数, 查询并打印该员工的下属的姓名,职位,工资等信息。 4、创建存储过程GetGrade(v_empno),查询指定员工的工资等级。工资小于等于3000,等级为“低”;工资大于3000,小于5000,等级为”中”;工资大于等于5000,等级为高。并执行该存储过程。 5、创建存储过程UpdateWage,查询指定员工的工资,如果工资小于3000, 则加200工资,并提示信息“XX号员工工资已更新。”,如果工资大于3000,则提示信息“XX号员工工资为XXX,已达到规定标准。” 6、定义一个函数,根据部门编号参数,查询出该部门的员工总数,并作为参数输出。 7、定义触发器MyTrigger,当表UserType中TypeId列的值发生变化时,自动更新表Users中的UserType列的值,从而保证数据的完整性: 8、创建触发器MyTrigger,它的作用是当表departments中的记录被删除后,自动删除表employees中的对应的员工记录,从而保证数据的完整性。 实验步骤(图文并茂):

游标卡尺是一种常用的量具,具有结构简单、使用方便、精度中等和测量的尺寸范围大等特点,可以用它来测量零件的外径、内径、长度、宽度、厚度、深度和孔距等,应用范围很广。 结构组成 游标卡尺由主尺和副尺(又称游标)组成。主尺与固定卡脚制成一体;副尺与活动卡脚制成一体,并能在主尺上滑动。游标卡尺有、、0.1mm三种测量精度。 读数方法 游标卡尺是利用主尺刻度间距与副尺刻度间距读数的。以13-2图0.02mm游标卡尺为例,主尺的刻度间距为1mm,当两卡脚合并时,主尺上49mm刚好等于副尺上50格,副尺每格长为=0.98mm。主尺与副尺的刻度间相关为1-0398=0.02mm,因此它的测量精度为0.02mm(副尺上直接用数字刻出) 游标卡尺读数分为三个步骤,下面以图13-3所示游标卡尺的某一状态为例进行说明。 1.在主尺上读出副尺零线以左的刻度,该值就是最后读数的整数部分。图示 33mm。 2.副尺上一定有一条与主尺的刻线对齐,在刻尺上读出该刻线距副尺的格 数,将其与刻度间距0.02mm相乘,就得到最后读数的小数部分。图示为 0.24mm。

3.将所得到的整数和小数部分相加,就得到总尺寸为33.24mm。 游标卡尺的使用方法 量具使用得是否合理,不但影响量具本身的精度,且直接影响零件尺寸的测量精度,甚至发生质量事故,对国家造成不必要的损失。所以,我们必须重视量具的正确使用,对测量技术精益求精,务使获得正确的测量结果,确保产品质量。 使用游标卡尺测量零件尺寸时,必须注意下列几点: 1.测量前应把卡尺揩干净,检查卡尺的两个测量面和测量刃口是否平直无 损,把两个量爪紧密贴合时,应无明显的间隙,同时游标和主尺的零位刻线要相互对准。这个过程称为校对游标卡尺的零位。 2.移动尺框时,活动要自如,不应有过松或过紧,更不能有晃动现象。用固 定螺钉固定尺框时,卡尺的读数不应有所改变。在移动尺框时,不要忘记松开固定螺钉,亦不宜过松以免掉了。 3.当测量零件的外尺寸时:卡尺两测量面的联线应垂直于被测量表面,不能 歪斜。测量时,可以轻轻摇动卡尺,放正垂直位置,图2-6所示。否则,量爪若在如图2-6所示的错误位置上,将使测量结果a比实际尺寸b要大; 先把卡尺的活动量爪张开,使量爪能自由地卡进工件,把零件贴靠在固定 量爪上,然后移动尺框,用轻微的压力使活动量爪接触零件。如卡尺带有微动装置,此时可拧紧微动装置上的固定螺钉,再转动调节螺母,使量爪接触零件并读取尺寸。决不可把卡尺的两个量爪调节到接近甚至小于所测尺寸,把卡尺强制的卡到零件上去。这样做会使量爪变形,或使测量面过早磨损,使卡尺失去应有的精度。

定义:何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表: Create Table Student(--学生表StudentID int primary key,--学号.... ) Create T able BorrowRecord(--学生借书记录表BorrowRecord int identity(1,1),--流水号StudentID int ,--学号BorrowDate datetime,--借出时间ReturnDAte Datetime,--归还时间... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student--在Student表中创建触发器for Update--为什么事件触发As --事件触发后所要做的事情 if Update(StudentID) begin Update BorrowRecord Set StudentID=i.StudentID

From BorrowRecord br , Deleted d ,Inserted i--Deleted和Inserted临时表Where br.StudentID=d.StudentID end 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:虚拟表Inserted虚拟表Deleted 在表记录新增时存放新增的记录不存储记录修改时存放用来更新的新记录存放更新前的记录删除时不存储记录存放被删除的记录 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。 对于2,创建一个Delete触发器Create trigger trdStudent On Student for Delete As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。SQL触发器实例2 USE Master GO

oracle11g 游标: 1. 当在PL/SQL中使用SQL语句时,Oracle会为其分配上下文区域,这是一段 私有的内存区域,用于暂时保存SQL语句影响到的数据。游标是指向这段内存区域的指针。 2. Oracle中主要有两种类型的游标: (1) 隐式游标:所有的DML语句和PL/SQL SELECT 语句都有; (2) 显式游标:由开发人员声明和控制。 3. 可以使用的游标属性包括四种:%ROWCOUNT、%FOUND、%NOTFOUND、 %ISOPEN,这四种属性对于显式游标和隐式游标都有用,但是含义和使用方法略有不同。游标在使用属性时,需要以游标名称作为前缀,以表明该属性是哪个游标的,隐式游标没有名称,所以在使用隐式游标时采取了统一的一个名称SQL。 4. 在PL/SQL中的SELECT语句只能且必须取出一行数据,取出多行或者零行都 被认为是异常,所以在对多行数据进行操作时,必须使用显式游标来实现。 5. 使用显式游标的步骤: (1)声明游标:CURSOR cursor_name is select_statement; (2)打开游标:OPEN cursor_name; (3)取游标中的数据:FETCH cursor_name INTO variable1,variable2,...; (4)关闭游标:CLOSE cursor_name; 6.用变量接收游标中的数据 sql> declare v_name emp.ename%TYPE; v_sal emp.sal%TYPE; cursor emp_cursor is select ename,sal from emp where deptno=10; begin open emp_cursor; loop fetch emp_cursor into v_name,v_sal; exit when emp_cursor%NOTFOUND; dbms_output.put_line(v_name || ‘的薪水是’ || v_sal);

SQL触发器实例讲解 2008-11-27 16:16:45| 分类:PROCEDURE | 标签:|字号大中小订阅 SQL触发器实例1 定义:何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表: Create Table Student( --学生表 StudentID int primary key, --学号 .... ) Create Table BorrowRecord( --学生借书记录表 BorrowRecord int identity(1,1), --流水号 StudentID int , --学号 BorrowDate datetime, --借出时间 ReturnDAte Datetime, --归还时间 ... ) 用到的功能有: 1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号); 2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。 等等。 这时候可以用到触发器。对于1,创建一个Update触发器: Create Trigger truStudent On Student --在Student表中创建触发器 for Update --为什么事件触发 As --事件触发后所要做的事情 if Update(StudentID) begin Update BorrowRecord Set StudentID=i.StudentID

机械式游标卡尺的使用方法 制作人:江老师 1、机械游标卡尺的简介 游标卡尺是精密的长度测量仪器,常见的机械游标卡尺如下图所示。它的量程为0~110mm,分 度值为0.1mm,由内测量爪、外测量爪、紧固螺钉、微调装置、主尺、游标尺、深度尺组成。 0~200mm以下规格的卡尺具有测量外径、内径、深度三种功能:

2、游标卡尺的零位校准: 步骤一:使用前,松开尺框上坚固螺钉,将尺框平稳拉开,用布将测量面、导向面擦干净; 步骤二:检查“零”位:轻推尺框,使卡尺两个量爪测量面合并,观察游标“零”刻线与尺身“零” 刻线应对齐,游标尾刻线与尺身相应刻线应对齐。否则,应送计量室或有关部门调整。 3、游标卡尺的测量方法:(外径) 步骤一:将被测物擦干净,使用时轻拿轻放; 步骤二:松开千分尺的固紧镙钉,校准零位,向后移动外测量爪,使两个外测量爪之间距离略

大于被测物体; 步骤三:一只手拿住游标卡尺的尺架,将待测物置于两个外测量爪之间,另一手向前推动活动外 测量尺,至活动外测量尺与被测物接触为止。 步骤四:读数。 注意:1)测量内孔尺寸时,量爪应在孔的直径方向上测量。 2)测量深度尺寸时,应使深度尺杆与被测工件底面相垂直。 4、游标卡尺的读数: 游标卡尺的读数主要分为三步: 1)看清楚游标卡尺的分度。10分度的精度是0.1mm,20分度的精度是0.05mm,50分度的精度 是0.02mm; 2)为了避免出错,要用毫米而不是厘米做单位; 3)看游标卡尺的零刻度线与主尺的哪条刻度线对准,或比它稍微偏右一点,以此读出毫米的整 数值; 4)再看与主尺刻度线重合的那条游标刻度线的数值n,则小数部分是nX精度,两者相加就是测量值; 深度测量 深度测量深度测量 深度测量 3 / 3 机械式游标卡尺的使用方法 机械式游标卡尺的使用方法机械式游标卡尺的使用方法 机械式游标卡尺的使用方法 5)游标卡尺不需要估读。

触发器建立的代码 Create Trigger TG_ProjectName On table1 After Update As Update table2 Set[工程名]=b.工程名 from table2 a,inserted b where a.ProjID=b.ID 关于触发器中Inserted和Deleted的解释。 inserted触发器语句中使用了两种特殊的表:deleted 表和inserted 表。Microsoft? SQL Server 2000 自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改。 inserted 和deleted 表主要用于触发器中: ◆扩展表间引用完整性。 ◆在以视图为基础的基表中插入或更新数据。 ◆检查错误并基于错误采取行动。 ◆找到数据修改前后表状态的差异,并基于此差异采取行动。 Deleted 表用于存储DELETE 和UPDATE 语句所影响的行的复本。在执行DELETE 或UPDATE 语句时,行从触发器表中删除,并传输到deleted 表中。Deleted 表和触发器表通常没有相同的行。Inserted 表用于存储INSERT 和UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。 更新事务类似于在删除之后执行插入;首先旧行被复制到deleted 表中,然后新行被复制到触发器表和inserted 表中。 在设置触发器条件时,应当为引发触发器的操作恰当使用inserted 和deleted 表。虽然在测试INSERT 时引用deleted 表或在测试DELETE 时引用inserted 表不会引起任何错误,但是在这种情形下这些触发器测试表中不会包含任何行。 说明 如果触发器操作取决于一个数据修改所影响的行数,应该为多行数据修改(基于SELECT 语句的INSERT、DELETE 或UPDATE)使用测试(如检查@@ROWCOUNT),然后采取相应的对策。 SQL Server 2000不允许AFTER 触发器引用inserted 和deleted 表中的text、ntext 或image 列;然而,允许INSTEAD OF 触发器引用这些列。有关更多信息,请参见CREATE TRIGGER。 在INSTEAD OF 触发器中使用inserted 和deleted 表 传递到在表上定义的INSTEAD OF 触发器的inserted 和deleted 表遵从与传递到AFTER 触发器的inserted 和deleted 表相同的规则。inserted 和deleted 表的格式与在其上定义INSTEAD OF 触发器的表的格式相同。inserted 和deleted 表中的每一列都直接映射到基表中的列。 有关引用带INSTEAD OF 触发器的表的INSERT 或UPDATE 语句何时必须提供列值的规则与表没有INSTEAD OF 触发器时相同: 不能为计算列或具有timestamp 数据类型的列指定值。 不能为具有IDENTITY 属性的列指定值,除非该列的IDENTITY_INSERT 为ON。当IDENTITY_INSERT 为ON 时,INSERT 语句必须提供一个值。INSERT 语句必须为所有无DEFAULT 约束的NOT NULL 列提供值。 对于除计算列、标识列或timestamp 列以外的任何列,任何允许空值的列或具有DEFAULT 定义的NOT NULL 列的值都是可选的。

删除SQL Server 的特定实例 若要删除SQL Server 的特定实例,请按照下列步骤操作: 1.找到并删除%drive%:\Program Files\Microsoft SQL Server\MSSQL\Binn 文件 夹,其中%drive%是要删除的SQL Server 实例的位置。 2.找到以下注册表项: o HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer 注意:如果要删除默认实例,则必须删除除Client项以外的所有项。 o HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 必须使用Regedt32.exe 来编辑要删除的实例的InstalledInstances 值。默认实例的显示名称为MSSQLSERVER,而命名实例的显示名称则为给该 实例指定的名称。 注意:不能使用Regedit.exe 编辑该值;您必须使用Regedt32.exe。 注意:如果这是SQL Server 2000 的群集实例,请为群集中的每个节点重复执行这些步骤。 删除SQL Server 的所有已知实例 若要删除SQL Server 的所有已知实例,请按照下列步骤操作: 1.找到并删除%drive%:\Program Files\Microsoft SQL Server\MSSQL\Binn 文件 夹。 2.找到并删除以下注册表项: o HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer o HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server 3.找到并删除以下注册表项: o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL Server o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLSER VERAGENT o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL ServerADHelper 4.步骤3 中的三个注册表项对应于Microsoft SQL Server 2000 的默认实例。命名实例 对应的注册表项与步骤 3 中列出的注册表项类似,但后面带有$instance_name,因

游标卡尺及万能角度尺的使用说明(有图示)

一、游标卡尺的使用说明 利用游标原理对两测量面相对移动分隔的距离进行读数的测量器具。游标卡尺(简称卡尺)。 游标卡尺可以测量产品的内、外尺寸(长度、宽度、厚度、内径和外径),孔距,高度和深度等。 游标卡尺根据其结构可分单面卡尺、双面卡尺、三用卡尺等。 (1)单面卡尺带有内外量爪,可以测量内侧尺寸和外侧尺 寸(图1-1)。 (2)双面卡尺的上量爪为刀口形外量爪,下量爪为内外量爪,可测 内外尺寸(图1-2)。 (3)三用卡尺的内量爪带刀口形 ,用于测量内尺寸;外量爪带平面 和刀口形的测量面,用于测量外尺寸;尺身背面带有深度尺,用于测量深度和高度(图1-3)。 (4)标卡尺读数原理与读数方法 为了掌握游标卡尺的正确使用方法,必须学会准确读数和正确操作。 游标卡尺的读数装置,是由尺身和游标两部分组成,当尺框上的活动测量爪与尺身上的固定测量爪贴合时,尺框上游标的“0”刻线(简称游标零线)与尺身的“0”刻线对齐,此时测量爪之间的距离为零。测量时,需要尺框向右移动到某一位置,这时活动测量爪与固定测量爪之间的距离,就是被测尺寸,见图1-4。假如游标零线与尺身上表示30mm 的刻线正好对齐,则说明被测尺寸是30mm ;如果游标零线在尺身上指示的尺数值比30mm 大一点,应该怎样读数呢?这时,被 刀口内测量爪 尺身尺框紧固螺钉 游标深度尺外测量爪图1-3

测尺寸的整数部分(为30mm),如上所述可从游标零线左边的尺身刻线上读出来 (图中箭头所指刻线),而比1mm小的小数部分则是借助游标读出来的(图中● 图1-4:游标卡尺测量尺寸 游标的小数部分读数方法是首先看游标的哪一条线与尺身刻线对 齐;然后把游标这条线的顺序数乘以游标读数值,就得出游标的读数,即 游标的读数=游标读数值X游标对齐刻线的顺序数 游标卡尺读数时可分三步: A、先读整数——看游标零线的左边,尺身上最靠近的一条刻线的数值,读出被测尺寸的整数部分; B、再读小数——看游标零线的右边,数出游标第几条刻线与尺身的数值刻线对齐,读出被测尺寸的小数部分(即游标读数值乘其对齐刻线的顺序数); C、得出被测尺寸——把上面两次读数的整数部分和小数 部分相加,就是卡尺的所测尺寸。 (1)注意事项 A、清洁量爪测量面。 B、检查各部件的相互作用;如尺框和微动装置移动灵活,紧固螺钉能否起作用。 C、校对零位。使卡尺两量爪紧密贴合,应无明显的光隙,主尺零线与游标尺零线应对齐。 D、测量结束要把卡尺平放,尤其是大尺寸的卡尺更应该注意,否则尺身会弯曲变形。 E、带深度尺的游标卡尺,用完后,要把测量爪合拢,否侧较细的深度尺露在外边,容易变形甚至折断。 F、卡尺使用完毕,要擦净上油,放到卡尺盒内,注意不要锈 蚀或弄脏。

SqlServer触发器的原理及案例合理的选用触发器会让你的系统更高效 2010 Ssc

目录 第1章何为触发器 (3) 1.1 触发器的'本质' (3) 1.2 这样做带来的'功能': (3) 1.3 触发器的作用 (3) 1.4 说明: (3) 第2章对触发器3种操作的分析 (4) 2.1 创建触发器 (4) 2.2 学习案例 (5) 2.2.1 建立表 (5) 2.2.2 触发器练习1 (5) 2.2.3 触发器练习2: (6) 第3章图形化操作触发器 (7) 3.1 查看触发器情况 (7) 第4章触发器中的变量操作 (11) 第5章SQL触发器语法参考 (11)

第1章何为触发器 1.1触发器的'本质' 触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录、更改记录或者删除记录时,当事件发生时,才被自动地激活。 1.2这样做带来的'功能': 触发器可以用来对表实施复杂的完整性约束,保持数据的一致性,当触发器所保护的数据发生改变时,触发器会自动被激活,响应同时执行一定的操作(对其它相关表的操作),从而保证对数据的不完整性约束或不正确的修改。触发器可以查询其它表,同时也可以执行复杂的T-SQL语句。触发器和引发触发器执行的命令被当作一次事务处理,因此就具备了事务的所有特征。 注意:'事务具备什么特征?在触发器中的作用?' 如果发现引起触发器执行的T-SQL语句执行了一个非法操作,比如关于其它表的相关性操作,发现数据丢失或需调用的数据不存在,那么就回滚到该事件执行前的SQL SERVER数据库状态。 1.3触发器的作用 触发器可以对数据库进行级联修改,这一点刚才已经说过了。需要说明的是:'触发器和约束的关系和区别' (1)一般来说,使用约束比使用触发器效率更高。 (2)同时,触发器可以完成比CHECK约束更复杂的限制。 1.4说明: 1.与CHECK约束不同,在触发器中可以引用其它的表。 2.触发器可以发现改变前后表中数据的不一致,并根据这些不同来进行相应的操作。

深度游标卡尺使用方法

深度游标卡尺 深度游标卡尺用于测量凹槽或孔的深度、梯形工件的梯层高度、长度等尺寸,平常被简称为“深度尺”。是一种用游标读数的深度量尺。 深度游标卡尺使用注意事项 深度游标卡尺是比较精密的量具,使用是否合理,不但影响深度游标卡尺本身的精度和使用寿命,而且对测量结果的准确性,也有直接影响。必须正确使用深度游标卡尺。 1.使用前,认真学习并熟练掌握深度游标卡尺的测量、读数方法。 2.搞清楚所用深度游标卡尺的量程、精度是否符合被测零件的要求。 3.使用前,检查深度游标卡尺应完整无任何损伤,移动尺框3时,活动要自如 不应有过松或过紧,更不能有晃动现象。 4.使用前,用纱布将深度游标卡尺擦拭干净,检查尺身4和游标5的刻线是否 清晰,尺身有无弯曲变形、锈蚀等现象。校验零位、检查各部分作用是否正常。 5.使用深度游标卡尺时,要轻拿轻放,不得碰撞或跌落地下。使用时不要用来 测量粗糙的物体,以免过早损坏测量面。 6.移动卡尺的尺框和微动装置时,不要忘记松开紧固螺钉4;但也不要松得过 量,以免螺钉脱落丢失。 7.测量前,应将被测量表面擦干净,以免灰尘、杂质磨损量具。 8.卡尺的测量基座和尺身端面应垂直于被测表面并贴合紧密,不得歪斜,否则 会造成测量结果不准。 9.应在足够的光线下读数,两眼的视线与卡尺的刻线表面垂直,以减小读数误 差。 10.在机床上测量零件时,要等零件完全停稳后进行,否则不但使量具的测量面 过早磨损而失去精度,且会造成事故。 11.测量沟槽深度或当其他基准面是曲线时,测量基座的端面必须放在曲线的 最高点上,测量出的深度尺寸才是工件的实际尺寸,否则会出现测量误差。

SQL Server 触发器创建、删除、修改 推荐揪错烈火学院> 网络编程> SQL SERVER > 阅读文章正文 一﹕触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表。 一﹕触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行完成后﹐与该触发器相关的这两个表也被删除。Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。 Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。 三﹕Instead of 和After触发器 SQL Server2000提供了两种触发器﹕Instead of 和After 触发器。这两种触发器的差别在于他们被激活的同﹕ Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在

SQL Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Declare @barCode varchar(50)--声明变量用于存放游标结果 DECLARE CsrName CURSOR FOR--声明游标 select barCode from eachBook --游标数据来源 BEGIN OPEN CsrName --打开游标 FETCH FROM CURSUBOK INTO @barCode--获得来源的一行记录放入变量 WHILE @@FETCH_STATUS = 0 BEGIN -----------------------------------------------------针对每个结果做的操作 print @barcode ----------------------------------------------------------------------------End FETCH NEXT FROM CsrName INTO @barCode --处理下一行数据 CLOSE CsrName --游标用完了要关掉 END 总结:一般sql语句是面向集合的,游标是面向集合里面的行的,相当于获取一行数据->处理->获得下一行数据->处理这样一个循环。能不用游标就尽量不要用游标,性能很烂 --两种触发器,after为表sql语句执行之后操作,INSTEAD OF为之前操作 create trigger tgr_name--创建触发器 on classes --在classes表上 for insert--当classes表插入数据是触发as里面的操作(for 有after默认值,所以是sql 语句执行完了执行) --,有insert、update、delete三种操作类型。 as declare @id int;--定义变量用来临时存放数据 select @id = id from inserted; --在inserted表中查询已经插入记录信息,update就有个updated表,deleted就是deleted表 print '刚刚插入的记录的ID是'+@id; GO

--建立触发器,显示修改人数 create trigger d1 on jun for insert,update as select '你正在修改数据' declare @a varchar(20) select @a=str(@@rowcount)+'个学生被修改' select @a select * from jun return insert into jun(爱好) values('跑步') update jun set 爱好='打球' where 学号<='103' --建立触发器,当男生人数在6个以内可以加入,否则不能加入 create trigger i1 on zg for insert as if((select count(性别) from zg where 性别='男')>6) select '不能插入,男生人数已满。' else select'插入成功' select * from zg insert into zg(学号,姓名,性别) values(20100636,'江渝','男') --建立触发器,如果语文成绩在200以内可以修改,否则不能修改 create trigger u1 on zg for update as if((select max(语文) from zg )>200) begin select '你不能修改' rollback end else select '修改成功' select * from zg update zg set 语文=语文+10 where 姓名='唐荣强' update zg set 语文=语文-20 where 姓名='张军' update zg set 语文=语文+30 where 姓名='张军'

触发器 ?触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化(INSERT、 UPDATE 或DELETE)时自动执行 ?触发器可以查询其它表,并可以包含复杂的Transact-SQL 语句 ?主要用于强制复杂的业务规则或要求 优点 ?自动执行 ?实现相关表层叠修改,实现多个表之间数据的一致性和完整性 ?实现比check约束更复杂的限制,可以引用其他表中的列 触发器的类型 ?AFTER触发器:在数据变动(INSERT、UPDATE、DELETE操作)完成后激发,只能在表 上定义,同一个表中可以有多个AFTER触发器 ?INSTEAD OF触发器:在数据变动以前被激发,并取代变动数据(INSERT、UPDATE、 DELETE操作),转而去执行触发器定义的操作,可以定义在表或视图上,每个update、insert和delete语句最多可以定义一个INSTEAD OF触发器。 创建触发器 ?CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [, ][DELETE]} AS sql_statement [...n ] } 触发器示例: ?CREATE TRIGGER reminder ON titles FOR INSERT, UPDATE AS RAISERROR (50009, 16, 10) 指定触发器何时激发 ?AFTER 触发器在触发操作(INSERT、UPDATE 或DELETE)后和处理完任何约束后激 发。可通过指定AFTER 或FOR 关键字来请求AFTER 触发器。 ?INSTEAD OF 触发器代替触发动作进行激发,并在处理约束之前激发。 ?对于每个触发操作(UPDATE、DELETE 和INSERT),每个表或视图只能有一个 INSTEAD OF 触发器。而一个表对于每个触发操作可以有多个AFTER 触发器。 触发器示例: create TRIGGER reminder ON titles FOR INSERT, delete,update AS --修改操作 if (select count(*) from inserted) > 0 and (select count(*) from deleted) >0 begin RAISERROR ('修改成功', 16, 10) end

--⒁在学生成绩表中,显示存在有 85 分以上成绩的课程号,并统计各门课程不及格人数在 10 人以上的课程数量。 SELECT course_id FROM stud_grade WHERE grade>85 GO select count(*) from ( SELECT course_id 课程号,count(course_id) 人数 FROM stud_grade WHERE grade<60 GROUP BY course_id HAVING count(course_id) >=10 ) -(7) 首先显示“计算机工程系”、“计算机网络技术专业”、班全体学生的基本信息,然后再统计“计算机工程系”、“计算机网络技术专业”、班的学生人数。 SELECT substring(stud_id,3,6)专业编号,count(*)人数 FROM stud_info WHERE substring(stud_id,3,6)=( select substring(speccode,3,6)+'02' from dbo.specialty_code where specname='计算机应用技术') --(9)在学生成绩表中,显示最低分大于60,最高分小于80 的stud_id 列。 select stud_id from dbo.stud_grade group by stud_id having max(grade)<80 and min(grade)>60 --(17)显示课程号为“”、课程成绩高于“”课程的学生的课程名、学号和姓名,并按成绩从高到低次序排列。 select course_name,g1.stud_id,g1.[name] from dbo.lesson_info,dbo.stud_grade as g1,dbo.stud_grade as g2 where dbo.lesson_info.course_id=g1.course_id and g1.stud_id=g2.stud_id and g1.course_id='0401010103' and g2.course_id='0401010104'and g1.grade>g2.grade order by g1.grade

相关文档