1.数据库脚本书写规范
数据库脚本大致分为三类:针对表结构的修改(DDL),针对数据的修改(DML)DDL主要包括create, drop, alter table DML主要包括select, insert, delete, update, 建立函数、存储过程、或触发器的脚本也应包含在DDL的范畴之内,第三类是插入或删除菜单的脚本,但因为菜单操作的脚本是不可以反复执行的,故可将其归到DDL大类中。
1) 建表脚本:如果建表语句是从powerdesigner导出的,必须注意以下几点
a. pd中做如下设置,database>generate database>keys & indexes>primary key>outside,这样设置的目的是将主键从建表语句中分离出来,以便适应正式环境。同时,建表脚本中不可以使用tablesapce语法来指定表空间。
b. 建表语句中表名和字段名不允许加引号,否则该表名或字段名将是大小写敏感的。
c. 如果建表脚本是从pd直接导出,那么必须将脚本开头部分删除已存在表的几条语句去掉,以免在执行时误删已经存在的表。
d. 新建表或修改已有表的结构之后,须将重新生成的schema一并打入更新包中提交。
数据库实例名是什么意思
e. 表结构修改脚本:表结构的修改一般包括添加字段,修改已有字段的数据类型,删除表中已有字段或对字段改名的操作是不允许的。
2) 数据插入脚本:数据插入脚本应当可以反复执行,在插入之前必须删除已经存在的相应数据以避免主键冲突。如果脚本是使用powerbuilder自动导出的,那么在保存时,必须将文件的编码格式指定为“ANSI/DBCS”格式,或将已导出的脚本用记事本打开,点击“另存为”按钮,将编码格式指定为“ANSI”。
3) 脚本文件中的每一条命令结尾必须加分号,一条命令最好写在一行中(不做强制要求),DDL操作和DML操作不要写在同一个脚本中,一个DML脚本文件必须在结尾位置加commit命令,并加换行,脚本中的其它位置不可加入此命令。
4) 数据库脚本中若要用到时间字符串,请在脚本的开始处加下面一条语句(包括结尾的分号):
alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
5) 如果是创建procedure/function/trigger/view的脚本,不需要写commit命令,但在脚本的结
尾加'/'符号标识脚本结束。
2.菜单修改脚本的使用说明
一类特殊的数据库脚本是菜单修改脚本,专门用来添加、删除和修改页面上显示的菜单。这种脚本的标准语法如下所示:
set serveroutput on;
set define off;
--这句话必须加上
exec insertmenu('人力管理->考勤管理', '我的测试1', '../abcd.jsp');
-- 这个语句是插入菜单的,第2个参数是要新加的菜单名,插入到第一个参数的同级节点,位置在它之上。 和我们现在的界面操作是一样的。
--注意:其中的 -> 必须是英文的!
--这个例子就是说:新增菜单 “我的测试1”,作为“人力管理->考勤管理”的同级节点。位置在“考勤管理”上面
exec insertchildmenu('人力管理->考勤管理', '子测试1', '../abcd.jsp');
-- 这个语句是作为子菜单插入的,第2个参数是要新加的菜单名,插入到第一个参数的下级节点。位置在第一个参数的所有子节点中是最前面的。和我们现在的界面操作是一样的。
--注意:其中的 -> 必须是英文的!
--这个例子就是说:新增菜单 “子测试1”,作为“人力管理->我的测试1”的子节点。位置在“我的测试1”所有子菜单中最前面的。
exec deletemenu('人力管理->考勤管理->我的测试1');
--这个语句是删除菜单的。和我们现在的界面操作是一样的。
--不能删除含有子节点的菜单
--注意:其中的 -> 必须是英文的!
exec updatemenu('客户管理->个人客户->新增客户', '新增客户1' , ' ' );
--这个语句是修改菜单名的,第2个参数是要修改的菜单名,第3个参数为空是说不更新连接。
--注意:其中的 -> 必须是英文的!
--这句话的意思就是说:将'客户管理->个人客户->新增客户'下的'新增客户'更改为'新增客户1'
exec updatemenu('客户管理->个人客户->新增客户',  ' ' ,  '../logon/1.jsp')
--这个语句是修改菜单连接的,第3个参数是说更改'客户管理->个人客户->新增客户'的连接,第2个参数为空是说不修改菜单名。
--注意:其中的 -> 必须是英文的!
--这句话的意思就是说:将'客户管理->个人客户->新增客户'的连接更改为'../logon/1.jsp'
exec updatemenu ('客户管理->个人客户->新增客户', '新增客户1' , '../logon/1.jsp' )
--这个语句是修改菜单名和连接的,第2个参数是要修改的菜单名,第3个参数是要修改菜单的连接。
--注意:其中的 -> 必须是英文的!
--这句话的意思就是说:将'客户管理->个人客户->新增客户'下的'新增客户'更改为'新增客户1',同时将'客户管理->个人客户->新增客户1'的连接更改为'../logon/1.jsp'
commit;
脚本的前两句话用来输出运行结果,Insertmenuinsertchildmenudeletemenuupdatemenu是可选部分,根据实际的需要选择对应的功能,操作完成之后必须commit,并加换行。
3.数据库脚本命名规范
1) 命名格式:
I 版本发布
项目_时间_提交人_脚本分类|提交序号.sql
当一次要提交多个数据库脚本时,需要在文件名的最后加序号以区分
时间格式为YYYYMMDDHHMM
脚本分类包括DMLDDLMenu(针对菜单修改的情况)
提交人姓名用英文拼写,拼写规则与名拼写规则相同(单字名者为名字全拼,双字名者为姓氏全拼加名的打头字母),如张三应写为zhangsan,王老五为wanglw
命名实例:lis(数据库实例名)_jbs(执行用户名)_201105201315(日期)_zhangsan(提交人姓名)_DML(语句类型)_1(执行顺序).sql
lis_jbs_201105201315_zhangsan_DML_2.sql
lis_jbs_201105201315_wanglw_DDL_2.sql
lis_jbs_201105201315_zhangsan_Menu_2.sql
  II 运维数据修改
      运维数据修改以压缩的形式在附件中提供, 压缩包命名格式如下:
lis(数据库实例名)_jbs(执行用户名)_201105201315(日期)_zhangsan(提交人姓名)_DML(语句类型)_1(执行顺序).rar
2) 运维数据修改邮件格式:邮件标题醒目指名脚本执行环境,如核心生产数据执行;
    邮件内容必须说明执行环境和执行用户,如核心生产环境lis用户执行,银保通生产ybt用户执行,或者资金生产ats001用户等;
    附件必须有执行和恢复脚本。
3) 脚本依赖性说明:当提交的几个脚本之间存在依赖关系时,必须随脚本附带一份依赖关系说明,比如要新建一个表并向里面插入数据,应提交两个脚本,并在说明里注明首先执行建表脚本,然后执行数据插入。
4)数据执行岗以收到脚本为标志执行脚本,不能回收,不能指定延时执行,请确认脚本正确性后发送邮件。