/// <summary>
 /// Visits the given <paramref name="removeReferenceNode"/>.
 /// </summary>
 /// <param name="removeReferenceNode"></param>
 public override void Visit(IRemoveReferenceNode removeReferenceNode)
 {
     if(IsImmediateChildOf<IColumnNode>(removeReferenceNode))
         MoveNodeTo(removeReferenceNode, removeReferenceNode.Parent.Parent.Parent);
     else if(IsImmediateChildOf<ITableNode>(removeReferenceNode))
         MoveNodeTo(removeReferenceNode, removeReferenceNode.Parent.Parent);
 }
 /// <summary>
 /// Visits the given <paramref name="removeReferenceNode"/>.
 /// </summary>
 /// <param name="removeReferenceNode"></param>
 public override void Visit(IRemoveReferenceNode removeReferenceNode)
 {
     Visit(removeReferenceNode.ChildNodes);
 }
 /// <summary>
 /// Visits the given <paramref name="removeReferenceNode"/>.
 /// </summary>
 /// <param name="removeReferenceNode"></param>
 public override void Visit(IRemoveReferenceNode removeReferenceNode)
 {
     TextWriter.WriteLine("alter table {0} drop constraint {1};",
         Platform.Dialect.EscapeIdentifier(removeReferenceNode.Table),
         Platform.Dialect.EscapeIdentifier(removeReferenceNode.Name));
 }
        /// <summary>
        ///  Visits the given <paramref name="removeReferenceNode" />.
        /// </summary>
        /// <param name="removeReferenceNode"></param>
        public override void Visit(IRemoveReferenceNode removeReferenceNode)
        {
            textWriter.Write("remove reference {0}", GetIdentifier(removeReferenceNode.Name));

            WriteProperties(removeReferenceNode);
            VisitBlock(removeReferenceNode);
        }
        /// <summary>
        /// Visits the given <paramref name="removeReferenceNode"/>.
        /// </summary>
        /// <param name="removeReferenceNode"></param>
        public override void Visit(IRemoveReferenceNode removeReferenceNode)
        {
            if(removeReferenceNode.Properties[MdlSyntax.FkTable] != null)
            {
                ITableDefinition table =
                    Environment.Schema.GetTable(AstNodePropertyUtil.AsString(removeReferenceNode.Properties[MdlSyntax.FkTable].Value));
                table.RemoveReference(removeReferenceNode.Name);

                removeReferenceNode.Table = table.Name;

                return;
            } // if

            //
            // If this node is a child node of IAlterTableNode, use that tables' name
            // as the FkTable
            if(IsImmediateChildOf<IAlterTableNode>(removeReferenceNode))
            {
                IAlterTableNode alterTableNode = (IAlterTableNode)removeReferenceNode.Parent;
                
                ITableDefinition table = Environment.Schema.GetTable(alterTableNode.Name);
                
                table.RemoveReference(removeReferenceNode.Name);
                removeReferenceNode.Table = table.Name;
            } // if
        }
 public override void Visit(IRemoveReferenceNode removeReferenceNode)
 {
 }