/// <summary> /// Visits the given <paramref name="alterTableNode"/>. /// </summary> /// <param name="alterTableNode"></param> public override void Visit(IAlterTableNode alterTableNode) { ITableDefinition table = Environment.Schema.GetTable(alterTableNode.Name); foreach(IAstNode node in alterTableNode.ChildNodes) { if(node is IRemoveColumnNode) table.RemoveColumn(((IRemoveColumnNode)node).Name); else if(node is IAddColumnNode) { IAddColumnNode addColumnNode = (IAddColumnNode)node; table.AddColumn(BindAddColumn(addColumnNode)); addColumnNode.Table = table.Name; } // else else if(node is IAlterColumnNode) { IColumnDefinition columnDefinition = table.GetColumn(((IAlterColumnNode)node).Name); IColumnNode columnNode = (IColumnNode)node; columnNode.Type = columnDefinition.Type; columnNode.Length = columnDefinition.Length; BindColumnProperties(columnNode, columnDefinition); AlterColumn(columnDefinition, (IAlterColumnNode)node); } // else if node.Accept(this); } // foreach }
/// <summary> /// Visits the given <paramref name="alterTableNode"/>. /// </summary> /// <param name="alterTableNode"></param> public override void Visit(IAlterTableNode alterTableNode) { Visit(alterTableNode.ChildNodes); }
/// <summary> /// Visits the given <paramref name="alterTableNode" />. /// </summary> /// <param name="alterTableNode"></param> public override void Visit(IAlterTableNode alterTableNode) { textWriter.Write("alter table {0}", GetIdentifier(alterTableNode.Name)); WriteProperties(alterTableNode); VisitBlock(alterTableNode); }
public override void Visit(IAlterTableNode alterTableNode) { IncludeTemplates(alterTableNode); }
protected override void AlterTableAlterColumn(IAlterTableNode alterTableNode, IAlterColumnNode alterColumnNode) { }
protected override void AlterTableRemoveColumn(IAlterTableNode alterTableNode, IRemoveColumnNode removeColumnNode) { }
protected virtual void AlterTableRemoveColumn(IAlterTableNode alterTableNode, IRemoveColumnNode removeColumnNode) { TextWriter.WriteLine("alter table {0} drop column {1};", Platform.Dialect.EscapeIdentifier(alterTableNode.Name), Platform.Dialect.EscapeIdentifier(removeColumnNode.Name)); }
protected virtual void AlterTableAlterColumn(IAlterTableNode alterTableNode, IAlterColumnNode alterColumnNode) { TextWriter.WriteLine("alter table {0} alter column {1};", Platform.Dialect.EscapeIdentifier(alterTableNode.Name), GetAlterColumnDefinition(alterColumnNode)); }
public override void Visit(IAlterTableNode alterTableNode) { foreach(IAstNode astNode in alterTableNode.ChildNodes) { if(astNode is IAddColumnNode) { // // Here's the situation: when downgrading, we potentially may encounter // a situation when we restore a previously deleted column. If table // in question contains data and column being added is non-nullable, // we won't be able to do so. To circumvent this problem, enforce // column to be nullable. var addColumnNode = (IAddColumnNode)astNode; TextWriter.WriteLine("alter table {0} add {1};", Platform.Dialect.EscapeIdentifier(alterTableNode.Name), GetColumnDefinition(addColumnNode, alterTableNode.Parent is IDowngradeNode)); } // if if(astNode is IRemoveColumnNode) { var removeColumnNode = (IRemoveColumnNode)astNode; AlterTableRemoveColumn(alterTableNode, removeColumnNode); } // if if(astNode is IAlterColumnNode) { var alterColumnNode = (IAlterColumnNode)astNode; AlterTableAlterColumn(alterTableNode, alterColumnNode); } // if } // foreach }