3.6 字体
系统保留字应大写,包括系统公共变量等。其他字符(如用户自定义变量、用户自定义数据对象名)小写。
需要特殊强调的部分可以大写。
一条完整注释语句的首字符应大写。对某变量、某条件字句的注释可以全部使用小写。
通过下一节中生成表r_a的删除触发器的实例可以部分说明对象命名、注释、基本书写格式和字符大小写方面的一些注意事项。
4 触发器编程规范
4.1 范例
下面通过一个例子,说明触发器编程中应遵守的规范:
/* delete related r_a according to deleted table */
CREATE TRIGGER r_a_d ON r_a
FOR DELETE
AS
IF @@ROWCOUNT = 0 -no rows deleted
RETURN
/* delete r_b table related to deleted table */
DELETE r_b
FROM r_b b, deleted d
WHERE b.id=d.id
IF @@ERROR != 0
BEGIN
RAISERROR("Error occurred deleting related records", 16, 1)
ROLLBACK TRAN
END
RETURN
作以下几点说明:
1. 检查是否有行被修改。注意:不论数据是否被修改,触发器都会引发,执行情况取决于T-SQL语句的执行,而和任何潜在的where子句是否执行无关。
2. 因为被删除行在该表中不再可用,所以应在被删除的表中查看。
3. 检查T-SQL语句的返回代码,以捕获任何出错条件。
4.2 事务过程中的触发器
1. 触发器内的rollback将所有工作返回至最外层的begin tran,完成触发器内的处理并异常终止当前的批处理。
2. 不可以从触发器内部返回至某个已命名的事务过程,这将产生运行错误,挂起所有工作并终止批处理。
5 存储过程编程规范
5.1 带有参数的执行
在执行存储过程时,可以通过名字来制定参数,这样可以用任何顺序传递参数,而且自动起到注释的作用,因此建议编程时使用这种方法。
5.2 缺省参数值
把参数的缺省值定为null,这是捕获在过程内调用存储过程所产生的错误的常用方法,不应让标准服务器消息报告参数丢失。在给定缺省之后,可以校验该缺省值并在存储过程内采取措施。
注意,当附值SELECT语句不返回行时,局部变量将保持在SELECT语句