5 T-SQL编程
5.1 编程基础
1、Timestamp时间戳类型
8个字节,提供数据库范围内的唯一值,是一个单调上升的计数器,反映数据库中数据修改的相对顺序。
在表中添加行、对某行进行修改时,相应timestamp类型列的值会自动被更新。
2、UniqueIdentifier类型
16字节,SQL Server根据网卡和CPU时钟产生的全局唯一标识符(GUID:Globally Unique Identifier)
世界上的任何两台计算机都不会生成重复的GUID值。GUID主要用于在拥有多个节点、多台计算机的网络中,分配必须具有唯一性的标识符。
设D表中IDs列是UniqueIdentifier类型,赋值示例:
update D set IDs = NEWID()
5.1.3 系统信息的读写函数
5.2.1 语句块BEGIN……END
语句块中的若干条语句被视为一条语句处理。
5.3 存储过程
存储过程:一组完成特定功能的SQL指令序列,经编译后存储在数据库中,在服务器上运行。
调用方式:类似于函数调用。
5.3.1 系统存储过程示例
用户创建、存储在用户数据库中的存储过程,只能在用户数据库中执行。
返回值的类型:只能是整型。(数值型取整,非数值型出错)
不能修改全局状态。
5.4.5 示例:查询层次关系的函数
5.5 事务
5.5.1 事务及事务语句
事务(Transaction):一个指令序列,或全部完成,或全部都不完成的,是一个不可分割的逻辑工作单元。
假设C表中已经存在记录('11', 'aaa',2),但不存在记录('12', 'bbb',2)。
5.6.1 触发器概念
触发器:由INSERT/UPDATE/DELETE事件触发执行的程序。
触发器的意义:自动执行,实现用户定义的完整性约束。
1、限制插入不合适的记录、限制删除或更新特定的记录。(超越CHECK约束、参照完整性约束等)
2、可以对相关表进行级联更改,在插入/修改/删除一条记录的同时在其他表中插入/修改/删除相关记录。
1
2、参数结构
删除数据时:deleted表中是待删除值,inserted表为空。
更新数据时:deleted表中是原值,inserted表中是新值。
5.7 游标
游标的应用背景:SQL命令都是面向集合的,但有时也需要对这些数据集合中的每一行进行“个性化”的操作。