戻る

トリガー作成スクリプト

0001: #! /bin/bash
0002: # ------------------------------------------------------------ #
0003: # CreateTrigger.sh
0004: # ================
0005: #
0006: # CreateTrigger.sh { <option> }
0007: # <option> : -d               Trigger  を削除する
0008: #            -r               Trigger  を再作成する
0009: #                             既定値は新規作成
0010: #            encode=UTF8      CHARACTER SET を UTF8 にする
0011: #                             既定値は EUCJ_0208
0012: #            dbpath=<path>    <path> の DBFILE を使う
0013: #                             既定値は /DB/birds/birds.fdb
0014: #
0015: # $Id: CreateTrigger.sh,v 1.7  ##########  $
0016: # ------------------------------------------------------------ #
0017: encode="EUCJ_0208"
0018: dbpath="localhost:/DB/birds/birds.fdb"
0019: while [ "${1}" != "" ]; do
0020:   if [ "${1:0:1}" == "-" ]; then
0021:     param=${1}
0022:   else
0023:     if [ "${1:0:7}" == "encode=" ]; then
0024:       encode=${1:7}
0025:     fi
0026:     if [ "${1:0:7}" == "dbpath=" ]; then
0027:       dbpath=${1:7}
0028:     fi
0029:   fi
0030:   shift
0031: done
0032: 
0033: if [ "${param}" == "-d" ] || [ "${param}" == "-r" ]; then
0034:   echo '**** DROP TRIGGER ****'
0035:   isql<<EOF
0036: CONNECT "${dbpath}" USER "SYSDBA" PASSWORD "********";
0037: DROP TRIGGER TR_SEQNOORDERTAB;
0038: DROP TRIGGER TR_SEQNOFAMILY;
0039: DROP TRIGGER TR_SEQNOGENUS;
0040: DROP TRIGGER TR_SEQNOSPECIES;
0041: DROP TRIGGER TR_SEQNOACCLOG;
0042: COMMIT;
0043: QUIT;
0044: EOF
0045:   if [ "${param}" == "-d" ]; then
0046:     exit
0047:   fi
0048: fi
0049: 
0050: echo '**** CREATE TRIGGER ****'
0051: isql<<EOF
0052: CONNECT $dbpath USER SYSDBA PASSWORD ********;
0053: /**************************************************************/
0054: /* TRIGGER : SEQNOORDERTAB                                    */
0055: /*                                                            */
0056: /* ORDERTAB の SEQNO を採番、更新する                         */
0057: /*                                                            */
0058: /**************************************************************/
0059: SET TERM !! ;
0060: CREATE TRIGGER TR_SEQNOORDERTAB FOR ORDERTAB
0061: BEFORE INSERT
0062: AS
0063: DECLARE VARIABLE MAXSEQ INTEGER;
0064: BEGIN
0065:     SELECT COUNTMAX FROM COUNTERTAB WHERE TABLENAME='ORDERTAB' INTO MAXSEQ;
0066:     IF (MAXSEQ IS NOT NULL) THEN
0067:         MAXSEQ=MAXSEQ+1;
0068:     ELSE
0069:         MAXSEQ=1;
0070:     NEW.SEQNO=MAXSEQ;
0071:     UPDATE COUNTERTAB SET COUNTMAX=:MAXSEQ WHERE TABLENAME='ORDERTAB';
0072: END
0073: !!
0074: SET TERM ;!!
0075: COMMIT;
0076: 
0077: /**************************************************************/
0078: /* TRIGGER : SEQNOFAMILY                                      */
0079: /*                                                            */
0080: /* FAMILY の SEQNO を採番、更新する                           */
0081: /*                                                            */
0082: /**************************************************************/
0083: SET TERM !! ;
0084: CREATE TRIGGER TR_SEQNOFAMILY FOR FAMILY
0085: BEFORE INSERT
0086: AS
0087: DECLARE VARIABLE MAXSEQ INTEGER;
0088: BEGIN
0089:     SELECT COUNTMAX FROM COUNTERTAB WHERE TABLENAME='FAMILY' INTO MAXSEQ;
0090:     IF (MAXSEQ IS NOT NULL) THEN
0091:         MAXSEQ=MAXSEQ+1;
0092:     ELSE
0093:         MAXSEQ=1;
0094:     NEW.SEQNO=MAXSEQ;
0095:     UPDATE COUNTERTAB SET COUNTMAX=:MAXSEQ WHERE TABLENAME='FAMILY';
0096: END
0097: !!
0098: SET TERM ;!!
0099: COMMIT;
0100: 
0101: /**************************************************************/
0102: /* TRIGGER : SEQNOGENUS                                       */
0103: /*                                                            */
0104: /* GENUS の SEQNO を採番、更新する                            */
0105: /*                                                            */
0106: /**************************************************************/
0107: SET TERM !! ;
0108: CREATE TRIGGER TR_SEQNOGENUS FOR GENUS
0109: BEFORE INSERT
0110: AS
0111: DECLARE VARIABLE MAXSEQ INTEGER;
0112: BEGIN
0113:     SELECT COUNTMAX FROM COUNTERTAB WHERE TABLENAME='GENUS' INTO MAXSEQ;
0114:     IF (MAXSEQ IS NOT NULL) THEN
0115:         MAXSEQ=MAXSEQ+1;
0116:     ELSE
0117:         MAXSEQ=1;
0118:     NEW.SEQNO=MAXSEQ;
0119:     UPDATE COUNTERTAB SET COUNTMAX=:MAXSEQ WHERE TABLENAME='GENUS';
0120: END
0121: !!
0122: SET TERM ;!!
0123: COMMIT;
0124: 
0125: /**************************************************************/
0126: /* TRIGGER : SEQNOSPECIES                                     */
0127: /*                                                            */
0128: /* SPECIES の SEQNO を採番、更新する                          */
0129: /*                                                            */
0130: /**************************************************************/
0131: SET TERM !! ;
0132: CREATE TRIGGER TR_SEQNOSPECIES FOR SPECIES
0133: BEFORE INSERT
0134: AS
0135: DECLARE VARIABLE MAXSEQ INTEGER;
0136: BEGIN
0137:     SELECT COUNTMAX FROM COUNTERTAB WHERE TABLENAME='SPECIES' INTO MAXSEQ;
0138:     IF (MAXSEQ IS NOT NULL) THEN
0139:         MAXSEQ=MAXSEQ+1;
0140:     ELSE
0141:         MAXSEQ=1;
0142:     NEW.SEQNO=MAXSEQ;
0143:     UPDATE COUNTERTAB SET COUNTMAX=:MAXSEQ WHERE TABLENAME='SPECIES';
0144: END
0145: !!
0146: SET TERM ;!!
0147: COMMIT;
0148: 
0149: /**************************************************************/
0150: /* TRIGGER : SEQNOACCLOG                                      */
0151: /*                                                            */
0152: /* ACCLOG の SEQNO を採番、更新する                           */
0153: /*                                                            */
0154: /**************************************************************/
0155: SET TERM !! ;
0156: CREATE TRIGGER TR_SEQNOACCLOG FOR ACCLOG
0157: BEFORE INSERT
0158: AS
0159: DECLARE VARIABLE MAXSEQ INTEGER;
0160: BEGIN
0161:     SELECT COUNTMAX FROM COUNTERTAB WHERE TABLENAME='ACCLOG' INTO MAXSEQ;
0162:     IF (MAXSEQ IS NOT NULL) THEN
0163:         MAXSEQ=MAXSEQ+1;
0164:     ELSE
0165:         MAXSEQ=1;
0166:     NEW.SEQNO=MAXSEQ;
0167:     UPDATE COUNTERTAB SET COUNTMAX=:MAXSEQ WHERE TABLENAME='ACCLOG';
0168: END
0169: !!
0170: SET TERM ;!!
0171: COMMIT;
0172: 
0173: QUIT;
0174: EOF
0175: exit

この HTML を検査する。( XHTML 1.0 Strict で書かれています )
Another HTML Lint Gateway ( Mirrored by htmllint.oosato.org )