让你提前认识软件开发(28):数据库存储过程中的重要表信息的保存及相关建议

第2部分 数据库SQL语言

数据库存储过程中的重要表信息的保存及相关建议

1. 存储过程中的重要表信息的保存

在很多存储过程中,会涉及到对表数据的更新、插入或删除等,为了防止修改之后的表数据出现问题,同时方便追踪问题,一般会为一些重要的表建立一个对应的debug表。这个debug表中的字段要包括原表的所有字段,同时要增加操作时间、操作码和操作描述等字段信息。

例如,在某项目中,包括了如下一个重要的表tb_XXX:

create table tb_XXX

(

     AAA                varchar(30)    not null,    -- AAA

     BBB                varchar(30)    not null,   -- BBB

     CCC                int                     not null,   -- CCC

     . . . . . .

)

我们的debug表可以命名为tb_XXX_debuglog,其定义如下:

create table tb_XXX_debuglog

(

     AAA                varchar(30)    not null,   -- AAA

     BBB                varchar(30)    not null,   -- BBB

     CCC                int           not null,   -- CCC

     . . . . . .

    opertime           varchar(19)        not null,    -- operating time

    result              varchar(20)     not null,   -- result code

    description     varchar(100)    not null,  -- operating description

    reservechar1  varchar(30)            null   -- reserved

)

增加的字段如红色字所示,其中opertime表示操作时间,result表示结果码(成功或失败等),description表示操作描述,reservechar1为保留字段。

存储过程中,在对tb_XXX表进行重要操作之前,可以先将里面的数据插入(转存)到tb_XXX_debuglog表中。在需要查找相关信息或排错的时候,可以很方便地找到,提高了程序的异常处理能力。

2. 一些建议

(1) 在编写完数据库脚本之后,一定要用checksql等工具对脚本进行检查,可以发现编程中的一些潜在的不足,如索引建立过少、语法有误等。

(2) 一定要按照公司的规范来对数据库脚本进行命名,不能认为只要代码写好了,怎么命名无所谓。

(3) 不管是建表脚本还是创建存储过程的脚本,代码的排版(如缩进、换行、对齐、留空行等)很重要,要尽量使得自己的代码阅读起来方便。因为我们首先是为人编写程序,其次才是计算机。

(4) 当需要在原来的SQL语句中增删字段或做其它修改时,建议先将整段SQL语句注释掉,然后将修改之后的语句添加到被删除语句的下方,尽量不要在原语句上直接进行修改,这样方便以后版本的比较。

(5) 对于存储过程中的if、else、else if、while、begin、end等语句自占一行,执行语句不要紧跟其后,不论其包括的执行语句有多少条,都要加语句块标志begin…end,这样方便阅读。

 

与C/C++/Java等编程语言一样,编写SQL数据库脚本也需要遵循一定的规则。我们不仅要让脚本实现它要完成的功能,而且要让性能尽量达到最优。“实践出真知”,只有不断地练习和总结,我们的数据库编程能力才会得到提高。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

让你提前认识软件开发(28):数据库存储过程中的重要表信息的保存及相关建议,布布扣,bubuko.com

时间: 2024-08-02 02:49:49

让你提前认识软件开发(28):数据库存储过程中的重要表信息的保存及相关建议的相关文章

让你提前认识软件开发(32):数据库索引

第2部分 数据库SQL语言 数据库索引 索引在数据库中占有非常重要的地位,它是对数据库表中一列或多列的值进行排序的一种结构.正确使用索引,可快速访问数据库表中的特定信息,进而提高数据库脚本的执行效率. 1. 索引分类 数据库表中经常有一列或几列的组合,其值唯一地标识表中的每一行,该列称为表的主键. 在数据库中,将索引分为三类:唯一索引.主键索引和聚集索引. 唯一索引是不允许其中任何两行具有相同索引值的索引,即索引列的值不允许重复. 主键索引是唯一索引的特定类型,该索引要求主键中的每个值都唯一.

让你提前认识软件开发(30):数据库脚本中的空行与空格

第2部分 数据库SQL语言 数据库脚本中的空行与空格 在数据库脚本中,空行与空格起着"锦上添花"的作用.恰当地使用它们,可以提高代码的规范性及可阅读性,进而提升数据库的编程效率. 1. 空行 空行起着分隔脚本段落的作用,适当的空行可以使脚本的布局更加的清晰.空行的作用有以下几个:         (1) 用于分隔两个数据表的创建脚本 示例: create table tb_example1 (         [表内容实现代码] ) go -- 空行 create table tb_e

让你提前认识软件开发(25):数据库简介

第2部分 数据库SQL语言 数据库简介 数据库是个通用化的综合性的数据集合,它可以供各种用户共享且具有最小的冗余度和较高的数据与程序的独立性.目前,国际上主导的大型数据库管理系统有ORACLE.SQL SERVER.SYBASE.INFORMIX和INGRES等. 数据库中常用的编程语言是SQL语言,按其功能可分为四大部分: (1) 数据定义语言(Data Definition Language,DDL),用于定义.撤销和修改数据模式. (2) 数据查询语言(Data Query Languag

让你提前认识软件开发(31):数据库脚本中的begin与end

第2部分 数据库SQL语言 数据库脚本中的begin与end 在数据库脚本中,begin与end是一对奇怪的单词.缺少它们,某些代码看起来会让人一头雾水:添加它们,代码的结构瞬间就清晰了. 确实,begin与end作为代码语句的开始和结束标志,可以让脚本程序的逻辑明确,易于阅读. begin与end主要用在以下地方: 1. if.else.else if.while等语句中 if.else.else if.while等语句要自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加语句块标志beg

让你提前认识软件开发(27):数据库表及索引的创建

第2部分 数据库SQL语言 数据库表及索引的创建         数据表(或称表),是数据库最重要的组成部分之一.数据库只是一个框架,数据表才是其实质的内容.举个例子来说,数据库就像是一座空旷的房子,而数据表是里面的家具,没有家具的房子只是一个空壳而已.根据信息的分类情况,一个数据库中可能包含若干个不同用途的数据表. 表结构有简单.有复杂,这就对开发人员提出了要求.如何设计一个表的字段才是最好的?表的字段如何命名?如何定义表字段的类型?如何建立索引?等等. 1. 修改之前的建表脚本 在作者从事过

让你提前认识软件开发(20):如何在C语言里面执行SQL语句?

[文章摘要] 在通信类软件中,程序经常需要与数据库打交道.为了实现诸如从数据库中获取数据.更新数据库表某字段.插入或删除某条数据等功能,就需要在C语言程序中构造一些SQL语句,并用函数来执行这些SQL语句. 本文介绍如何在C语言程序中构造并执行SQL语句,为相关软件开发工作的开展提供了参考. [关键词] SQL语句  C语言  程序  流程  开发 一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1) 程序需要获取数据库中某数据表的字段值,并对这些字

让你提前认识软件开发(47):同行评审

第3部分 软件研发工作总结 同行评审 在<浪潮之巅>这本书中,吴军老师描述了在Google早期的工作方式,其中有一段是这么写的:我一般会在吃完晚饭后把代码修改的清单发给克雷格做代码审核,他一般晚上10点左右会回复我,给我修改意见,详细到某一行多了一个空格. 吴军老师所描述的内容,其实就是软件开发中的同行评审流程. 几乎在所有的软件项目中,都需要同行评审.一个人不管能力多强,看问题的角度总会受到限制,写出来的程序和文档等定不会是十全十美的.如果能够让懂行的同事给参阅一下,并提出他们认为正确的意见

让你提前认识软件开发(48):集成测试

第3部分 软件研发工作总结 集成测试 [文章摘要] 一般的软件研发项目均涉及到多模块和多功能.在各个模块实现其功能之后,把相关模块结合起来进行集成测试以验证整个系统是否满足需求是很有必要的. 本文以作者的实际项目经验为背景,描述了集成测试的整个过程,并对集成测试过程中的一些常见问题进行了简单的介绍. 1. 前言 大部分软件开发人员在工作过程中可能都会有这样的经历:明明在自己模块中实现得好好的功能,一旦和其它模块结合就会出现问题.因此,集成测试就显得很重要.这就有点像很多国内的标准与国际标准不统一

让你提前认识软件开发(33):数据操纵语言(DML)

第2部分 数据库SQL语言 数据操纵语言(DML) 数据操纵语言(Data Manipulation Language,DML)包括insert.delete和update语句,用于增.删.改数据. 本文用以下的表tb_employeeinfo作为例子加以说明: create table tb_employeeinfo (     employeeno         varchar(20)       not null,       -- 员工工号     employeename    va