#+ DB schema - Constraints Management (mydatabase) -------------------------------------------------------------------------------- --This code is generated with the template dbapp5.0 --Warning: Enter your changes within a or section, otherwise they will be lost. {} {} -------------------------------------------------------------------------------- --Importing modules IMPORT FGL libdbappCore IMPORT FGL mydatabase_events {} {} -- Database schema SCHEMA mydatabase -------------------------------------------------------------------------------- --Functions {} #+ Check constraints on the "seqreg" table #+ #+ @param p_forUpdate TRUE: for 'update' SQL operation, FALSE for 'insert' SQL operation #+ @param p_data - a row data LIKE seqreg.* #+ #+ @returnType INTEGER, STRING #+ @return ERROR_SUCCESS|ERROR_FAILURE, error message PUBLIC FUNCTION mydatabase_dbxconstraints_seqreg_checkTableConstraints(p_forUpdate, p_data) DEFINE p_forUpdate BOOLEAN DEFINE p_data RECORD LIKE seqreg.* DEFINE errNo INTEGER DEFINE errMsg STRING DEFINE l_errNo INTEGER DEFINE l_errMsg STRING {} {} LET errNo = ERROR_SUCCESS INITIALIZE errMsg TO NULL {} {} CALL mydatabase_dbxconstraints_seqreg_sr_name_checkColumnConstraints(p_data.sr_name) RETURNING l_errNo, l_errMsg CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, l_errNo, l_errMsg) RETURNING errNo, errMsg CALL mydatabase_dbxconstraints_seqreg_sr_last_checkColumnConstraints(p_data.sr_last) RETURNING l_errNo, l_errMsg CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, l_errNo, l_errMsg) RETURNING errNo, errMsg CALL mydatabase_dbxconstraints_seqreg_pk_seqreg_checkUniqueConstraint(p_forUpdate, p_data.sr_name) RETURNING l_errNo, l_errMsg CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, l_errNo, l_errMsg) RETURNING errNo, errMsg IF mydatabase_events.m_DbxDataEvent_seqreg_CheckTableConstraints IS NOT NULL THEN CALL mydatabase_events.m_DbxDataEvent_seqreg_CheckTableConstraints(p_forUpdate, p_data.*) RETURNING l_errNo, l_errMsg END IF CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, l_errNo, l_errMsg) RETURNING errNo, errMsg {} {} RETURN errNo, errMsg END FUNCTION {} --fct.seqreg_checkTableConstraints {} #+ Check the primary key uniqueness constraint on the "seqreg" #+ #+ @param p_forUpdate TRUE: for 'update' SQL operation, FALSE for 'insert' SQL operation #+ @param p_key - Primary Key #+ #+ @returnType INTEGER, STRING, STRING #+ @return ERROR_SUCCESS|ERROR_FAILURE, error message PUBLIC FUNCTION mydatabase_dbxconstraints_seqreg_pk_seqreg_checkUniqueConstraint(p_forUpdate, p_key) DEFINE errNo INTEGER DEFINE errMsg STRING DEFINE p_forUpdate BOOLEAN DEFINE p_key RECORD seqreg_sr_name LIKE seqreg.sr_name END RECORD DEFINE l_key RECORD seqreg_sr_name LIKE seqreg.sr_name END RECORD DEFINE l_where STRING DEFINE l_sqlQuery STRING DEFINE l_count INTEGER {} {} LET errNo = ERROR_SUCCESS INITIALIZE errMsg TO NULL LET l_where = "WHERE seqreg.sr_name = ? " LET l_sqlQuery = "SELECT COUNT(*), sr_name FROM seqreg ", l_where, " GROUP BY sr_name" {} {} TRY PREPARE cur_seqreg_pk_seqreg_checkUniqueConstraint FROM l_sqlQuery EXECUTE cur_seqreg_pk_seqreg_checkUniqueConstraint USING p_key.* INTO l_count, l_key.* FREE cur_seqreg_pk_seqreg_checkUniqueConstraint IF (NOT p_forUpdate AND l_count > 0) OR (p_forUpdate AND l_count > 0 AND p_key.* != l_key.*) THEN CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, ERROR_FAILURE, "\n- sr_name: " || ERROR_BAM_00002) RETURNING errNo, errMsg END IF CATCH LET errNo = ERROR_FAILURE END TRY {} {} RETURN errNo, errMsg END FUNCTION {} --fct.seqreg_pk_seqreg_checkUniqueConstraint {} #+ Check constraints on the "seqreg.sr_name" column #+ #+ @param p_sr_name - VARCHAR(30) - sr_name #+ #+ @returnType INTEGER, STRING #+ @return ERROR_SUCCESS|ERROR_FAILURE, error message PUBLIC FUNCTION mydatabase_dbxconstraints_seqreg_sr_name_checkColumnConstraints(p_sr_name) DEFINE errNo INTEGER DEFINE errMsg STRING DEFINE p_sr_name LIKE seqreg.sr_name {} {} LET errNo = ERROR_SUCCESS INITIALIZE errMsg TO NULL {} {} IF p_sr_name IS NULL THEN CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, ERROR_FAILURE, "\n- sr_name: " || ERROR_BAM_00001) RETURNING errNo, errMsg END IF {} {} RETURN errNo, errMsg END FUNCTION {} --fct.seqreg_sr_name_checkColumnConstraints {} #+ Check constraints on the "seqreg.sr_last" column #+ #+ @param p_sr_last - INTEGER - sr_last #+ #+ @returnType INTEGER, STRING #+ @return ERROR_SUCCESS|ERROR_FAILURE, error message PUBLIC FUNCTION mydatabase_dbxconstraints_seqreg_sr_last_checkColumnConstraints(p_sr_last) DEFINE errNo INTEGER DEFINE errMsg STRING DEFINE p_sr_last LIKE seqreg.sr_last {} {} LET errNo = ERROR_SUCCESS INITIALIZE errMsg TO NULL {} {} IF p_sr_last IS NULL THEN CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, ERROR_FAILURE, "\n- sr_last: " || ERROR_BAM_00001) RETURNING errNo, errMsg END IF {} {} RETURN errNo, errMsg END FUNCTION {} --fct.seqreg_sr_last_checkColumnConstraints {} #+ Check the Foreign Key existence constraint on the "seqreg" #+ #+ @param p_data - Primary Key #+ #+ @returnType INTEGER, STRING #+ @return ERROR_SUCCESS|ERROR_FAILURE, error message PUBLIC FUNCTION mydatabase_dbxconstraints_seqreg_pk_seqreg_checkFKConstraint(p_data) DEFINE errNo INTEGER DEFINE errMsg STRING DEFINE p_data RECORD seqreg_sr_name LIKE seqreg.sr_name END RECORD DEFINE l_where STRING DEFINE l_sqlQuery STRING DEFINE l_count INTEGER {} {} LET errNo = ERROR_SUCCESS INITIALIZE errMsg TO NULL IF NOT (p_data.seqreg_sr_name IS NULL) THEN LET l_where = "WHERE seqreg.sr_name = ? " LET l_sqlQuery = "SELECT COUNT(*) FROM seqreg ", l_where {} {} TRY PREPARE cur_seqreg_pk_seqreg_checkFKConstraint FROM l_sqlQuery EXECUTE cur_seqreg_pk_seqreg_checkFKConstraint USING p_data.* INTO l_count FREE cur_seqreg_pk_seqreg_checkFKConstraint IF (l_count == 0) THEN CALL libdbapp_utilBuildErrorNoAndErrorMsg(errNo, errMsg, ERROR_FAILURE, "\n- sr_name: " || ERROR_BAM_00004) RETURNING errNo, errMsg END IF CATCH LET errNo = ERROR_FAILURE END TRY END IF {} {} RETURN errNo, errMsg END FUNCTION {} --fct.seqreg_pk_seqreg_checkFKConstraint -------------------------------------------------------------------------------- --Add user functions {} {}