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)); } }
/// <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); }
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)); }
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)); }
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))); }
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)); } }
/// <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); } }
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)); } }
public void Visit(SqlAlterTable node) { }
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)); }
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()); }
public virtual string Translate(SqlCompilerContext context, SqlAlterTable node, DefaultConstraint constraint) { return(TranslateExecDropDefaultConstraint(context, node, constraint)); }
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))); }
public virtual void Visit(SqlAlterTable node) { VisitInternal(node.Action); }