Esempio n. 1
0
        public override string Translate(SqlCompilerContext context, SqlAlterTable node, AlterTableSection section)
        {
            switch (section)
            {
            case AlterTableSection.AddColumn:
                return("ADD");

            case AlterTableSection.DropBehavior:
                var cascadableAction = node.Action as SqlCascadableAction;
                if (cascadableAction == null || !cascadableAction.Cascade)
                {
                    return(string.Empty);
                }
                if (cascadableAction is SqlDropConstraint)
                {
                    return("CASCADE");
                }
                if (cascadableAction is SqlDropColumn)
                {
                    return("CASCADE CONSTRAINTS");
                }
                throw new ArgumentOutOfRangeException("node.Action");

            default:
                return(base.Translate(context, node, section));
            }
        }
Esempio n. 2
0
        /// <inheritdoc/>
        public override void Visit(SqlAlterTable node)
        {
            var renameColumnAction = node.Action as SqlRenameColumn;

            if (renameColumnAction != null)
            {
                context.Output.AppendText(((Translator)translator).Translate(context, renameColumnAction));
                return;
            }
            var dropConstrainAction = node.Action as SqlDropConstraint;

            if (dropConstrainAction != null)
            {
                if (dropConstrainAction.Constraint is DefaultConstraint)
                {
                    var constraint = dropConstrainAction.Constraint as DefaultConstraint;
                    if (constraint.NameIsStale)
                    {
                        //We must know name of default constraint for drop it.
                        //But MS SQL creates name of default constrain by itself.
                        //And if we moved table to another schema or database or renamed table by recreation during upgrade,
                        //we doesn't know real name of default constraint.
                        //Because of this we should find name of constraint in system views.
                        //And we able to drop default constraint after that.
                        context.Output.AppendText(((Translator)translator).Translate(context, node, constraint));
                        return;
                    }
                }
            }
            base.Visit(node);
        }
Esempio n. 3
0
        public override void Visit(SqlAlterTable node)
        {
            var renameColumnAction = node.Action as SqlRenameColumn;

            if (renameColumnAction != null)
            {
                context.Output.AppendText(((Translator)translator).Translate(context, renameColumnAction));
            }
            else if (node.Action is SqlDropConstraint)
            {
                using (context.EnterScope(node)) {
                    context.Output.AppendText(translator.Translate(context, node, AlterTableSection.Entry));

                    var action     = node.Action as SqlDropConstraint;
                    var constraint = action.Constraint as TableConstraint;
                    context.Output.AppendText(translator.Translate(context, node, AlterTableSection.DropConstraint));
                    if (constraint is ForeignKey)
                    {
                        context.Output.AppendText("REFERENCES " + translator.QuoteIdentifier(constraint.DbName));
                    }
                    else
                    {
                        context.Output.AppendText(translator.Translate(context, constraint, ConstraintSection.Entry));
                    }
                    context.Output.AppendText(translator.Translate(context, node, AlterTableSection.DropBehavior));
                    context.Output.AppendText(translator.Translate(context, node, AlterTableSection.Exit));
                }
            }
            else
            {
                base.Visit(node);
            }
        }
        public void Test165()
        {
            var           t    = schema.Tables["table1"];
            var           uc   = t.CreatePrimaryKey(string.Empty, t.TableColumns["field1"]);
            SqlAlterTable stmt = SqlDdl.Alter(t, SqlDdl.AddConstraint(uc));

            Console.Write(Compile(stmt));
        }
Esempio n. 5
0
        public void Test158()
        {
            var t = Catalog.Schemas["main"].Tables["customer"];

            Xtensive.Sql.Model.UniqueConstraint uc = t.CreateUniqueConstraint("newUniqueConstraint", t.TableColumns["Phone"]);
            SqlAlterTable stmt = SqlDdl.Alter(t, SqlDdl.AddConstraint(uc));

            Assert.Throws <NotSupportedException>(() => Console.Write(Compile(stmt)));
        }
        public void Test159()
        {
            var t = Catalog.Schemas["Sakila"].Tables["customer"];

            Xtensive.Sql.Model.UniqueConstraint uc = t.CreateUniqueConstraint("newUniqueConstraint", t.TableColumns["email"]);
            SqlAlterTable stmt = SqlDdl.Alter(t, SqlDdl.DropConstraint(uc));

            Console.Write(Compile(stmt));
        }
        public void Test158()
        {
            var t = schema.Tables["customer"];

            Xtensive.Sql.Model.UniqueConstraint uc = t.CreateUniqueConstraint("newUniqueConstraint", t.TableColumns["email"]);
            SqlAlterTable stmt = SqlDdl.Alter(t, SqlDdl.AddConstraint(uc));

            Console.Write(Compile(stmt));
        }
        public void Test156()
        {
            SqlAlterTable alter =
                SqlDdl.Alter(
                    schema.Tables["customer"],
                    SqlDdl.DropColumn(schema.Tables["customer"].TableColumns["first_name"]));

            Console.Write(Compile(alter));
        }
Esempio n. 9
0
        public void Test165()
        {
            var t = Catalog.Schemas["main"].CreateTable("SomeWierdTableName");

            t.CreateColumn("Field01", new SqlValueType(SqlType.Int32));
            t.CreateColumn("Field02", new SqlValueType(SqlType.Int32));

            var           uc   = t.CreatePrimaryKey(string.Empty, t.TableColumns["Field02"]);
            SqlAlterTable stmt = SqlDdl.Alter(t, SqlDdl.AddConstraint(uc));

            Assert.Throws <NotSupportedException>(() => Console.Write(Compile(stmt)));
        }
Esempio n. 10
0
        public override string Translate(SqlCompilerContext context, SqlAlterTable node, AlterTableSection section)
        {
            switch (section)
            {
            case AlterTableSection.AddColumn:
                return("ADD");

            case AlterTableSection.DropBehavior:
                return(string.Empty);

            default:
                return(base.Translate(context, node, section));
            }
        }
Esempio n. 11
0
        /// <inheritdoc/>
        public override string Translate(SqlCompilerContext context, SqlAlterTable node, AlterTableSection section)
        {
            switch (section)
            {
            case AlterTableSection.Entry:
                return("ALTER TABLE " + Translate(context, node.Table));

            case AlterTableSection.AddColumn:
                return("ADD");

            case AlterTableSection.Exit:
                return(string.Empty);

            default:
                throw SqlHelper.NotSupported(node.Action.GetType().Name);
            }
        }
Esempio n. 12
0
        public override string Translate(SqlCompilerContext context, SqlAlterTable node, AlterTableSection section)
        {
            switch (section)
            {
            case AlterTableSection.DropBehavior:
                var cascadableAction = node.Action as SqlCascadableAction;
                if (cascadableAction == null || !cascadableAction.Cascade)
                {
                    return(string.Empty);
                }
                if (cascadableAction is SqlDropConstraint)
                {
                    return(string.Empty);
                }
                return(cascadableAction.Cascade ? "CASCADE" : "RESTRICT");

            default:
                return(base.Translate(context, node, section));
            }
        }
Esempio n. 13
0
 public void Visit(SqlAlterTable node)
 {
 }
Esempio n. 14
0
        public void Test155()
        {
            SqlAlterTable alter = SqlDdl.Alter(Catalog.Schemas["main"].Tables["customer"], SqlDdl.AddColumn(Catalog.Schemas["main"].Tables["customer"].TableColumns["CompanyName"]));

            Console.Write(Compile(alter));
        }
Esempio n. 15
0
        protected string TranslateExecDropDefaultConstraint(SqlCompilerContext context, SqlAlterTable node, DefaultConstraint defaultConstraint)
        {
            var resultBuilder = new StringBuilder();
            var column        = defaultConstraint.Column;
            var table         = defaultConstraint.Table;
            var schema        = defaultConstraint.Column.DataTable.Schema;
            var gettingNameOfDefaultConstraintScript = GetCurentNameOfDefaultConstraintScript();

            var sqlVariableName = RemoveFromStringInvalidCharacters(string.Format("var_{0}_{1}_{2}", schema.DbName,
                                                                                  table.DbName,
                                                                                  column.DbName));

            resultBuilder.Append(string.Format(gettingNameOfDefaultConstraintScript,
                                               sqlVariableName,
                                               QuoteIdentifier(schema.Catalog.DbName),
                                               schema.DbName,
                                               table.DbName,
                                               column.DbName));
            resultBuilder.Append(" ");
            resultBuilder.Append("Exec(N'");
            resultBuilder.Append(Translate(context, node, AlterTableSection.Entry));
            resultBuilder.Append(Translate(context, node, AlterTableSection.DropConstraint));
            resultBuilder.AppendFormat(" CONSTRAINT [' + @{0} + N']')", sqlVariableName);
            return(resultBuilder.ToString());
        }
Esempio n. 16
0
 public virtual string Translate(SqlCompilerContext context, SqlAlterTable node, DefaultConstraint constraint)
 {
     return(TranslateExecDropDefaultConstraint(context, node, constraint));
 }
Esempio n. 17
0
        public void Test156()
        {
            SqlAlterTable alter = SqlDdl.Alter(Catalog.Schemas["main"].Tables["customer"], SqlDdl.DropColumn(Catalog.Schemas["main"].Tables["customer"].TableColumns["CompanyName"]));

            Assert.Throws <NotSupportedException>(() => Console.Write(Compile(alter)));
        }
Esempio n. 18
0
 public virtual void Visit(SqlAlterTable node)
 {
     VisitInternal(node.Action);
 }