public string GetAllTableConstraintsByTypeSystemTables(eDBVersion version, eConstraintType ContraintsType)
        {
            var sb = new StringBuilder();

            sb.Append($@"select ");
            sb.Append($@"rc.rdb$constraint_name,");
            sb.Append($@"rc.rdb$constraint_type,");
            sb.Append($@"rc.rdb$relation_name,");
            sb.Append($@"rc.rdb$deferrable,");
            sb.Append($@"rc.rdb$initially_deferred,");
            sb.Append($@"rc.rdb$index_name,");
            sb.Append($@"cc.rdb$trigger_name,");
            sb.Append($@"rfc.rdb$const_name_uq,");
            sb.Append($@"rfc.rdb$match_option,");
            sb.Append($@"rfc.rdb$update_rule,");
            sb.Append($@"rfc.rdb$delete_rule,");
            sb.Append($@"inx.rdb$field_name,inx.rdb$field_position ");
            sb.Append($@"from rdb$relation_constraints rc ");
            sb.Append($@"left join rdb$check_constraints cc on cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"left join rdb$ref_constraints rfc on rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"left join rdb$index_segments inx on inx.rdb$index_name = rc.rdb$index_name ");
            sb.Append($@"where rc.rdb$relation_name like '%$%' AND rc.rdb$constraint_type = '{EnumHelper.GetDescription(ContraintsType)}' ");
            sb.Append($@"order by rc.rdb$constraint_name,rc.rdb$relation_name,  inx.rdb$field_name,inx.rdb$field_position;");
            return(sb.ToString());
        }
        public string GetTableIndicies(eDBVersion version, string tableName)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("SELECT RDB$INDICES.RDB$INDEX_NAME AS Index_Name ,RDB$INDICES.rdb$unique_flag AS Unique_Flag,RDB$INDICES.rdb$index_inactive AS Inactive_Flag ");
            sb.Append("FROM RDB$INDEX_SEGMENTS");
            sb.Append("JOIN RDB$INDICES ON RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ");
            sb.Append("LEFT JOIN RDB$RELATION_CONSTRAINTS ON RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ");
            sb.Append($@"WHERE UPPER(RDB$INDICES.RDB$RELATION_NAME) = '{tableName}' ");
            sb.Append("GROUP BY RDB$INDICES.RDB$INDEX_NAME,RDB$INDICES.rdb$index_type,RDB$INDICES.rdb$unique_flag,RDB$INDICES.rdb$index_inactive;");
            return(sb.ToString());
        }
        public string GetTableCheckConstraints(eDBVersion version, string TableName)
        {
            var sb = new StringBuilder();

            sb.Append($@"select rc.rdb$constraint_name, rc.rdb$constraint_type, rc.rdb$relation_name, rc.rdb$deferrable, rc.rdb$initially_deferred, rc.rdb$index_name,");
            sb.Append($@"tr.rdb$trigger_name,tr.rdb$trigger_source,rfc.rdb$const_name_uq, rfc.rdb$match_option, rfc.rdb$update_rule, rfc.rdb$delete_rule ");
            sb.Append($@"from rdb$relation_constraints rc " + "");
            sb.Append($@"left join rdb$check_constraints cc on cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"left join rdb$triggers tr on tr.rdb$trigger_name = cc.rdb$trigger_name ");
            sb.Append($@"left join rdb$ref_constraints rfc on rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"where  rc.rdb$relation_name = '{TableName}' and rc.rdb$constraint_name not like '%$%' AND rc.rdb$constraint_type = 'CHECK';");
            return(sb.ToString());
        }
        public string GetIndiciesByName(eDBVersion version, string indexName)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("SELECT RDB$INDICES.RDB$RELATION_NAME,RDB$INDICES.RDB$INDEX_NAME AS Index_Name,RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS Field_Name,");
            sb.Append("RDB$INDICES.rdb$unique_flag AS Unique_Flag,RDB$INDICES.rdb$index_inactive AS Inactive_Flag,RDB$INDICES.RDB$INDEX_TYPE ");
            sb.Append("FROM RDB$INDEX_SEGMENTS ");
            sb.Append("JOIN RDB$INDICES ON RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ");
            sb.Append("LEFT JOIN RDB$RELATION_FIELDS ON RDB$RELATION_FIELDS.rdb$field_position = (RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION + 1) AND RDB$INDEX_SEGMENTS.RDB$FIELD_NAME = RDB$RELATION_FIELDS.rdb$field_name ");
            sb.Append("LEFT JOIN RDB$RELATION_CONSTRAINTS ON RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ");
            sb.Append($@"WHERE UPPER(RDB$INDICES.RDB$INDEX_NAME) = '{indexName}';");
            return(sb.ToString());
        }
示例#5
0
        public string RefreshNonSystemDomains(eDBVersion version)
        {
            string cmd = string.Empty;

            string cmd0     = "SELECT RDB$FIELDS.RDB$FIELD_NAME,RDB$FIELDS.RDB$CHARACTER_LENGTH,RDB$FIELDS.RDB$FIELD_TYPE,RDB$TYPES.rdb$type_name,RDB$CHARACTER_SETS.RDB$CHARACTER_SET_NAME,RDB$COLLATIONS.RDB$COLLATION_NAME,RDB$FIELDS.RDB$DEFAULT_SOURCE,RDB$FIELDS.RDB$DESCRIPTION FROM RDB$FIELDS";
            string cmd1     = "LEFT JOIN RDB$TYPES ON RDB$TYPES.RDB$TYPE = RDB$FIELDS.RDB$FIELD_TYPE";
            string cmd7     = "LEFT JOIN RDB$CHARACTER_SETS ON RDB$FIELDS.RDB$CHARACTER_SET_ID = RDB$CHARACTER_SETS.RDB$CHARACTER_SET_ID";
            string cmd8     = "LEFT JOIN RDB$COLLATIONS ON RDB$FIELDS.RDB$COLLATION_ID = RDB$COLLATIONS.RDB$COLLATION_ID  AND RDB$CHARACTER_SETS.RDB$CHARACTER_SET_ID = RDB$COLLATIONS.RDB$CHARACTER_SET_ID";
            string wherestr = "WHERE RDB$TYPES.RDB$FIELD_NAME = 'RDB$FIELD_TYPE' AND RDB$FIELDS.RDB$FIELD_NAME NOT LIKE '%$%'";

            cmd = cmd0 + " " + cmd1 + " " + cmd7 + " " + cmd8 + " " + wherestr + ";";

            return(cmd);
        }
        public string GetAllIndicies(eDBVersion version, eTableType tableType)
        {
            var sb = new StringBuilder();

            sb.Append("SELECT RDB$INDICES.RDB$RELATION_NAME, RDB$INDICES.RDB$INDEX_NAME,RDB$INDEX_SEGMENTS.RDB$FIELD_NAME,RDB$INDICES.rdb$unique_flag,RDB$INDICES.rdb$index_inactive,RDB$INDICES.rdb$index_type ");
            sb.Append("FROM RDB$INDEX_SEGMENTS JOIN RDB$INDICES ON RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ");
            sb.Append("LEFT JOIN RDB$RELATION_FIELDS ON RDB$RELATION_FIELDS.rdb$field_position = (RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION + 1) AND RDB$INDEX_SEGMENTS.RDB$FIELD_NAME = RDB$RELATION_FIELDS.rdb$field_name ");
            sb.Append("LEFT JOIN RDB$RELATION_CONSTRAINTS ON RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME ");
            string str = (tableType == eTableType.system)
                ? "WHERE RDB$INDICES.RDB$SYSTEM_FLAG > 0 AND RDB$INDICES.RDB$FOREIGN_KEY IS NULL "
                : "WHERE RDB$INDICES.RDB$SYSTEM_FLAG = 0 AND RDB$INDICES.RDB$FOREIGN_KEY IS NULL ";

            sb.Append(str);
            sb.Append("GROUP BY RDB$INDICES.RDB$RELATION_NAME,RDB$INDICES.RDB$INDEX_NAME,RDB$INDEX_SEGMENTS.RDB$FIELD_NAME,RDB$INDICES.rdb$index_type,RDB$INDICES.rdb$unique_flag,RDB$INDICES.rdb$index_inactive,RDB$INDICES.rdb$index_type ");
            sb.Append("ORDER BY RDB$INDICES.RDB$RELATION_NAME, RDB$INDICES.RDB$INDEX_NAME;");
            return(sb.ToString());
        }
示例#7
0
        public string GetTableConstraintsByType(eDBVersion version, string ContraintsType, string TableName)
        {
            var sb = new StringBuilder();

            /*
             * sb.Append($@"select ");
             * sb.Append($@"rc.rdb$constraint_name,");
             * sb.Append($@"rc.rdb$constraint_type,");
             * sb.Append($@"rc.rdb$relation_name,");
             * sb.Append($@"rc.rdb$deferrable,");
             * sb.Append($@"rc.rdb$initially_deferred,");
             * sb.Append($@"rc.rdb$index_name,");
             * sb.Append($@"cc.rdb$trigger_name,");
             * sb.Append($@"rfc.rdb$const_name_uq,");
             * sb.Append($@"rfc.rdb$match_option,");
             * sb.Append($@"rfc.rdb$update_rule,");
             * sb.Append($@"rfc.rdb$delete_rule ");
             * sb.Append($@"from rdb$relation_constraints rc ");
             * sb.Append($@"LEFT JOIN rdb$check_constraints cc ON cc.rdb$constraint_name = rc.rdb$constraint_name ");
             * sb.Append($@"LEFT JOIN rdb$ref_constraints rfc ON rfc.rdb$constraint_name = rc.rdb$constraint_name ");
             * sb.Append($@"where  rc.rdb$relation_name = '{TableName}' and rc.rdb$constraint_name NOT LIKE '%$%' AND rc.rdb$constraint_type = '{ContraintsType}';");
             */
            sb.Append($@"select ");
            sb.Append($@"rc.rdb$constraint_name,");
            sb.Append($@"rc.rdb$constraint_type,");
            sb.Append($@"rc.rdb$relation_name,");
            sb.Append($@"rc.rdb$deferrable,");
            sb.Append($@"rc.rdb$initially_deferred,");
            sb.Append($@"rc.rdb$index_name,");
            sb.Append($@"cc.rdb$trigger_name,");
            sb.Append($@"rfc.rdb$const_name_uq, rfc.rdb$match_option, rfc.rdb$update_rule, rfc.rdb$delete_rule,");
            sb.Append($@"inx.rdb$field_name,inx.rdb$field_position ");
            sb.Append($@"from rdb$relation_constraints rc ");
            sb.Append($@"LEFT JOIN rdb$check_constraints cc ON cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"LEFT JOIN rdb$ref_constraints rfc ON rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"LEFT JOIN rdb$index_segments inx ON inx.rdb$index_name = rc.rdb$index_name ");
            sb.Append($@"where rc.rdb$relation_name = '{TableName}' and rc.rdb$constraint_name NOT LIKE '%$%' AND rc.rdb$constraint_type = '{ContraintsType}' ");
            sb.Append($@"order by rc.rdb$constraint_name,rc.rdb$relation_name,  inx.rdb$field_name,inx.rdb$field_position;");

            return(sb.ToString());
        }
        public string GetConstraintsByTypeNotNull(eDBVersion version)
        {
            var sb = new StringBuilder();

            sb.Append($@"select ");
            sb.Append($@"rc.rdb$constraint_name,");
            sb.Append($@"rc.rdb$constraint_type,");
            sb.Append($@"rc.rdb$relation_name,");
            sb.Append($@"rc.rdb$deferrable,");
            sb.Append($@"rc.rdb$initially_deferred,");
            sb.Append($@"rc.rdb$index_name,");
            sb.Append($@"cc.rdb$trigger_name,");
            sb.Append($@"rfc.rdb$const_name_uq,");
            sb.Append($@"rfc.rdb$match_option,");
            sb.Append($@"rfc.rdb$update_rule,");
            sb.Append($@"rfc.rdb$delete_rule ");
            sb.Append($@"from rdb$relation_constraints rc ");
            sb.Append($@"left join rdb$check_constraints cc on cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"left join rdb$ref_constraints rfc on rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"where rc.rdb$constraint_name not like '%$%' AND rc.rdb$constraint_type = 'NOT NULL';");
            return(sb.ToString());
        }
        public string GetConstraintsByTypePrimaryKey(eDBVersion version)
        {
            var sb = new StringBuilder();

            sb.Append($@"select ");
            sb.Append($@"rc.rdb$constraint_name,");
            sb.Append($@"rc.rdb$constraint_type,");
            sb.Append($@"rc.rdb$relation_name,");
            sb.Append($@"rc.rdb$deferrable,");
            sb.Append($@"rc.rdb$initially_deferred,");
            sb.Append($@"rc.rdb$index_name,");
            sb.Append($@"ins.rdb$field_name,");
            sb.Append($@"rfc.rdb$const_name_uq,");
            sb.Append($@"rfc.rdb$match_option,");
            sb.Append($@"rfc.rdb$update_rule,");
            sb.Append($@"rfc.rdb$delete_rule ");
            sb.Append($@"from rdb$relation_constraints rc ");
            sb.Append($@"left join rdb$check_constraints cc on cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"left join rdb$ref_constraints rfc on rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"left join rdb$index_segments ins on ins.rdb$index_name = rc.rdb$index_name ");
            sb.Append($@"where rc.rdb$constraint_name not like '%$%' AND rc.rdb$constraint_type = 'PRIMARY KEY';");
            return(sb.ToString());
        }
示例#10
0
        public string GetConstraintsByTypeUnique(eDBVersion version)
        {
            var sb = new StringBuilder();

            sb.Append($@"select ");
            sb.Append($@"rc.rdb$constraint_name,");
            sb.Append($@"rc.rdb$constraint_type,");
            sb.Append($@"rc.rdb$relation_name,");
            sb.Append($@"rc.rdb$deferrable,");
            sb.Append($@"rc.rdb$initially_deferred,");
            sb.Append($@"rc.rdb$index_name,");
            sb.Append($@"ins.rdb$field_name,");
            sb.Append($@"rfc.rdb$const_name_uq,");
            sb.Append($@"rfc.rdb$match_option,");
            sb.Append($@"rfc.rdb$update_rule,");
            sb.Append($@"rfc.rdb$delete_rule ");
            sb.Append($@"from rdb$relation_constraints rc ");
            sb.Append($@"LEFT JOIN rdb$check_constraints cc ON cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"LEFT JOIN rdb$ref_constraints rfc ON rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"LEFT JOIN rdb$index_segments ins ON ins.rdb$index_name = rc.rdb$index_name ");
            sb.Append($@"where rc.rdb$constraint_name NOT LIKE '%$%' AND rc.rdb$constraint_type = 'UNIQUE';");
            return(sb.ToString());
        }
示例#11
0
        public string GetAllTableCheckConstraintsSystem(eDBVersion version)
        {
            var sb = new StringBuilder();

            sb.Append($@"select ");
            sb.Append($@"rc.rdb$constraint_name,");
            sb.Append($@"rc.rdb$constraint_type,");
            sb.Append($@"rc.rdb$relation_name,");
            sb.Append($@"rc.rdb$deferrable,");
            sb.Append($@"rc.rdb$initially_deferred,");
            sb.Append($@"rc.rdb$index_name,");
            sb.Append($@"tr.rdb$trigger_name,");
            sb.Append($@"tr.rdb$trigger_source,");
            sb.Append($@"rfc.rdb$const_name_uq,");
            sb.Append($@"rfc.rdb$match_option,");
            sb.Append($@"rfc.rdb$update_rule,");
            sb.Append($@"rfc.rdb$delete_rule ");
            sb.Append($@"from rdb$relation_constraints rc ");
            sb.Append($@"LEFT JOIN rdb$check_constraints cc ON cc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"LEFT JOIN rdb$triggers tr ON tr.rdb$trigger_name = cc.rdb$trigger_name ");
            sb.Append($@"LEFT JOIN rdb$ref_constraints rfc ON rfc.rdb$constraint_name = rc.rdb$constraint_name ");
            sb.Append($@"where  rc.rdb$relation_name like '%$%' AND rc.rdb$constraint_type = 'CHECK';");
            return(sb.ToString());
        }