예제 #1
0
        }//DdlTableOpType



        public void addColumn(string columnname, CswEnumDataDictionaryColumnType columntype, Int32 datatypesize, Int32 dblprecision,
                              string defaultvalue, string description, string foreignkeycolumn, string foreignkeytable, bool constrainfkref, bool isview,
                              string lowerrangevalue, bool lowerrangevalueinclusive, CswEnumDataDictionaryPortableDataType portabledatatype, bool ReadOnly,
                              bool Required, CswEnumDataDictionaryUniqueType uniquetype, bool uperrangevalueinclusive, string upperrangevalue)
        //Int32 NodeTypePropId, string SubFieldName )
        {
            CswColumnDdlOp CswColumnDdlOp = new CswColumnDdlOp(columnname, CswEnumDdlColumnOpType.Add);

            CswColumnDdlOp.columntype               = columntype;
            CswColumnDdlOp.datatypesize             = datatypesize;
            CswColumnDdlOp.dblprecision             = dblprecision;
            CswColumnDdlOp.defaultvalue             = defaultvalue;
            CswColumnDdlOp.description              = description;
            CswColumnDdlOp.isview                   = isview;
            CswColumnDdlOp.lowerrangevalue          = lowerrangevalue;
            CswColumnDdlOp.lowerrangevalueinclusive = lowerrangevalueinclusive;
            CswColumnDdlOp.portabledatatype         = portabledatatype;
            CswColumnDdlOp.ReadOnly                 = ReadOnly;
            CswColumnDdlOp.Required                 = Required;
            CswColumnDdlOp.uniquetype               = uniquetype;
            CswColumnDdlOp.uperrangevalueinclusive  = uperrangevalueinclusive;
            CswColumnDdlOp.upperrangevalue          = upperrangevalue;
            //CswColumnDdlOp.NodeTypePropId = NodeTypePropId;
            //CswColumnDdlOp.SubFieldName = SubFieldName;

            _Columns.Add(columnname, CswColumnDdlOp);

            if (dbg_ManageConstraints)
            {
                if (constrainfkref && string.Empty != foreignkeycolumn && string.Empty != foreignkeytable)
                {
                    _CswConstraintDdlOps.add(_TableName, CswColumnDdlOp.columnname, foreignkeytable, foreignkeycolumn, constrainfkref);
                }
            }
        }//addColumn()
예제 #2
0
        }//revert()

        private void _revertColumn(CswColumnDdlOp ColumnDdlOp)
        {
            if (CswEnumDdlColumnOpType.Add == ColumnDdlOp.DdlColumnOpType)
            {
                if (dbg_ManageConstraints)
                {
                    _CswConstraintDdlOps.apply(_TableName, ColumnDdlOp.columnname);
                }
                _CswNbtResources.CswResources.dropColumn(_TableName, ColumnDdlOp.columnname);
            }
            else if (CswEnumDdlColumnOpType.Drop == ColumnDdlOp.DdlColumnOpType)
            {
                _CswNbtResources.CswResources.addColumn(_TableName, ColumnDdlOp, false);   //we know in this context that the deletion of dd data will get rolled back, so we leave dd data alone

                string PkColumn = _CswNbtResources.CswResources.getPrimeKeyColName(_TableName);

                string UpdateSql = "update " + _TableName + " set " + ColumnDdlOp.columnname + " = (select " + ColumnDdlOp.columnname + " from " + _TableCopyName + " where " + _TableCopyName + "." + PkColumn + "=" + _TableName + "." + PkColumn + ")";

                _CswNbtResources.CswResources.execArbitraryPlatformNeutralSql(UpdateSql);

                if (dbg_ManageConstraints)
                {
                    _CswConstraintDdlOps.apply(_TableName, ColumnDdlOp.columnname);
                }
            }
            else //DdlColumnOpType.Rename == ColumnDdlOp.DdlColumnOpType
            {
                _CswNbtResources.CswResources.renameColumn(_TableName, ColumnDdlOp.columnname, ColumnDdlOp.originalcolumnname);
            }
        }//_revertColumn()
예제 #3
0
        }//addColumn()

        public void dropColumn(string ColumnName)
        {
            CswColumnDdlOp CswColumnDdlOp = new CswColumnDdlOp(ColumnName, CswEnumDdlColumnOpType.Drop);

            _CswNbtResources.CswResources.DataDictionary.setCurrentColumn(_TableName, ColumnName);

            //We have to capture all this incase we need to rollback the drop operation
            CswColumnDdlOp.columnname = ColumnName;
            CswColumnDdlOp.columntype = _CswNbtResources.DataDictionary.ColumnType;
            //CswColumnDdlOp.constrainfkref = _CswNbtResources.DataDictionary.ConstrainFkRef;
            CswColumnDdlOp.datatypesize = _CswNbtResources.DataDictionary.DataTypeSize;
            CswColumnDdlOp.dblprecision = _CswNbtResources.DataDictionary.DblPrecision;
            CswColumnDdlOp.defaultvalue = _CswNbtResources.DataDictionary.DefaultValue;
            CswColumnDdlOp.description  = _CswNbtResources.DataDictionary.Description;
            //CswColumnDdlOp.foreignkeycolumn = _CswNbtResources.DataDictionary.ForeignKeyColumn;
            //CswColumnDdlOp.foreignkeytable = _CswNbtResources.DataDictionary.ForeignKeyTable;
            CswColumnDdlOp.isview                   = _CswNbtResources.DataDictionary.IsView;
            CswColumnDdlOp.lowerrangevalue          = _CswNbtResources.DataDictionary.LowerRangeValue;
            CswColumnDdlOp.lowerrangevalueinclusive = _CswNbtResources.DataDictionary.LowerRangeValueInclusive;
            CswColumnDdlOp.portabledatatype         = _CswNbtResources.DataDictionary.PortableDataType;
            CswColumnDdlOp.ReadOnly                 = _CswNbtResources.DataDictionary.ReadOnly;
            CswColumnDdlOp.Required                 = _CswNbtResources.DataDictionary.Required;
            CswColumnDdlOp.uniquetype               = _CswNbtResources.DataDictionary.UniqueType;
            CswColumnDdlOp.uperrangevalueinclusive  = _CswNbtResources.DataDictionary.UpperRangeValueInclusive;
            CswColumnDdlOp.upperrangevalue          = _CswNbtResources.DataDictionary.UpperRangeValue;
            //CswColumnDdlOp.NodeTypePropId = _CswNbtResources.DataDictionary.NodeTypePropId;
            //CswColumnDdlOp.SubFieldName = _CswNbtResources.DataDictionary.SubFieldName;

            _Columns.Add(ColumnName, CswColumnDdlOp);

            if (dbg_ManageConstraints)
            {
                _CswConstraintDdlOps.markColumnForRemoval(_TableName, ColumnName);
            }
        }//dropColumn()
예제 #4
0
        }//dropColumn()

        public void renameColumn(string OriginalColumnName, string NewColumnName)
        {
            //We don't need to capture the same info as we do for dropColumn() because
            //drop would just be renaming back to the original name.

            //We are assuming that the native db rename op will schlep constraints along,
            //but this needs to be proven (see test cases)

            CswColumnDdlOp CswColumnDdlOp = new CswColumnDdlOp(NewColumnName, CswEnumDdlColumnOpType.Rename);

            CswColumnDdlOp.originalcolumnname = OriginalColumnName;
            _Columns.Add(NewColumnName, CswColumnDdlOp);
        }//renameColumn()