Esempio n. 1
0
        /// <summary>
        /// Creates a query for creation or alteration of a view
        /// </summary>
        /// <param name="sb">StringBuilder to write the query in</param>
        /// <param name="actionName">The name of the requested action</param>
        private void CreateQuery(StringBuilder sb, string actionName)
        {
            // Adding the name of the action
            sb.Append(actionName);

            // Adding an algorithm
            if (Algorithm != Algorithms.UNDEFINED)
            {
                sb.Append(" ALGORITHM = ");
                sb.Append(Algorithm.ToString());
            }

            // Adding definer if not current user
            string definer = DataInterpreter.GetStringNotNull(Attributes, View.Definer);

            if (!DataInterpreter.CompareInvariant(definer, CurretnUser))
            {
                QueryBuilder.WriteUserNameIfNotEmpty(definer, " DEFINER = ", sb);
            }


            // Adding security type, if are not empty
            QueryBuilder.WriteIfNotEmptyString(Attributes, View.SecurityType, " SQL SECURITY ", sb, false);

            // Adding definition of a view
            sb.Append(" VIEW ");
            QueryBuilder.WriteIdentifier(Attributes, View.Name, sb);
            sb.Append(" AS ");
            sb.AppendLine();
            QueryBuilder.WriteValue(Attributes, View.Definition, sb, false);

            // Adding check options
            if (CheckOption != CheckOptions.NONE)
            {
                sb.AppendLine();
                sb.Append(" WITH ");
                sb.Append(CheckOption.ToString());
                sb.Append(" CHECK OPTION");
            }
        }