当前位置: 首页>>代码示例>>C++>>正文


C++ Constraint::GetOnUpdate方法代码示例

本文整理汇总了C++中Constraint::GetOnUpdate方法的典型用法代码示例。如果您正苦于以下问题:C++ Constraint::GetOnUpdate方法的具体用法?C++ Constraint::GetOnUpdate怎么用?C++ Constraint::GetOnUpdate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Constraint的用法示例。


在下文中一共展示了Constraint::GetOnUpdate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: GetAlterTableConstraintSql

wxString MySqlDbAdapter::GetAlterTableConstraintSql(Table* tab)
{
	//TODO:SQL:
	wxString str =  wxString::Format(wxT("-- ---------- CONSTRAINTS FOR TABLE `%s` \n"),tab->GetName().c_str());
	str.append(wxT("-- -------------------------------------------------------------\n"));
	wxString prefix = wxString::Format(wxT("ALTER TABLE `%s` "),tab->GetName().c_str());

	SerializableList::compatibility_iterator node = tab->GetFirstChildNode();
	while( node ) {
		Constraint* constr = NULL;
		constr = wxDynamicCast(node->GetData(), Constraint);
		if (constr) {
			if (constr->GetType() == Constraint::foreignKey) {
				str.append(prefix + wxString::Format(wxT("ADD CONSTRAINT `%s` FOREIGN KEY (`%s`) REFERENCES `%s`(`%s`) " ), constr->GetName().c_str(), constr->GetLocalColumn().c_str(), constr->GetRefTable().c_str(), constr->GetRefCol().c_str()));
				str.append(wxT("ON UPDATE "));
				switch(constr->GetOnUpdate()) {
				case Constraint::restrict:
					str.append(wxT("RESTRICT "));
					break;
				case Constraint::cascade:
					str.append(wxT("CASCADE "));
					break;
				case Constraint::setNull:
					str.append(wxT("SET NULL "));
					break;
				case Constraint::noAction:
					str.append(wxT("NO ACTION "));
					break;
				}
				str.append(wxT("ON DELETE "));
				switch(constr->GetOnDelete()) {
				case Constraint::restrict:
					str.append(wxT("RESTRICT "));
					break;
				case Constraint::cascade:
					str.append(wxT("CASCADE "));
					break;
				case Constraint::setNull:
					str.append(wxT("SET NULL "));
					break;
				case Constraint::noAction:
					str.append(wxT("NO ACTION "));
					break;
				}
				str.append(wxT("; \n"));
			}
		}//if (constr->GetType() == Constraint::primaryKey) str.append(prefix + wxString::Format(wxT("ADD CONSTRAINT `%s` PRIMARY KEY (`%s`); \n"), constr->GetName().c_str(), constr->GetLocalColumn().c_str()));


		node = node->GetNext();
	}
	str.append(wxT("-- -------------------------------------------------------------\n"));
	return str;
}
开发者ID:05storm26,项目名称:codelite,代码行数:54,代码来源:MySqlDbAdapter.cpp

示例2: OnLeftDoubleClick

void DatabaseCanvas::OnLeftDoubleClick(wxMouseEvent& event)
{
    int result;
    std::vector<std::wstring> errors;
    m_selectedShape = GetShapeUnderCursor();
    std::vector<FKField *> newFK;
    ViewType type = dynamic_cast<DrawingView *>( m_view )->GetViewType();
    ConstraintSign *sign = NULL;
    if( m_selectedShape )
    {
        ShapeList list;
        GetShapesAtPosition( event.GetPosition(), list );
        bool found = false;
        for( ShapeList::iterator it = list.begin(); it != list.end() && !found; it++ )
        {
            sign = wxDynamicCast( (*it), ConstraintSign );
            if( sign )
                found = true;
        }
        if( type == DatabaseView && !sign )
            DeselectAll();
        if( sign && type == DatabaseView )
        {
            bool logOnly;
            Constraint *constraint = sign->GetConstraint();
            std::wstring kName = constraint->GetName().ToStdWstring(), refTable, fkTable;
            std::vector<std::wstring> foreignKeyFields, refKeyFields;
            constraint->GetLocalColumns( foreignKeyFields );
            constraint->GetRefColumns( refKeyFields );
            DatabaseTable *table = const_cast<DatabaseTable *>( constraint->GetFKTable() );
            wxString refTableName = constraint->GetRefTable();
            int match = constraint->GetPGMatch();
            bool found1 = false, found2 = false;
            for( std::vector<MyErdTable *>::iterator it = m_displayedTables.begin(); it < m_displayedTables.end() && !found1 && !found2; it++ )
            {
                if( const_cast<DatabaseTable &>( (*it)->GetTable() ).GetTableName() == const_cast<DatabaseTable *>( constraint->GetFKTable() )->GetTableName() )
                {
                    (*it)->Select( true );
                    fkTable = const_cast<DatabaseTable &>( (*it)->GetTable() ).GetTableName();
                    found1 = true;
                }
                if( const_cast<DatabaseTable &>( (*it)->GetTable() ).GetTableName() == refTableName )
                {
                    refTable = const_cast<DatabaseTable *>( &(*it)->GetTable() )->GetTableName();
                    found2 = true;
                }
            }
            int deleteProp, updateProp;
            FK_ONUPDATE actionUpdate;
            FK_ONDELETE actionDelete;
            Constraint::constraintAction action = constraint->GetOnDelete();
            if( action == Constraint::restrict )
            {
                deleteProp = 1;
                actionDelete = RESTRICT_DELETE;
            }
            if( action == Constraint::cascade )
            {
                deleteProp = 2;
                actionDelete = CASCADE_DELETE;
            }
            if( action == Constraint::setNull )
            {
                deleteProp = 3;
                actionDelete = SET_NULL_DELETE;
            }
            if( action == Constraint::noAction )
            {
                deleteProp = 0;
                actionDelete = NO_ACTION_DELETE;
            }
            if( action == Constraint::setDefault )
            {
                deleteProp = 4;
                actionDelete = SET_DEFAULT_DELETE;
            }
            action = constraint->GetOnUpdate();
            if( action == Constraint::restrict )
            {
                updateProp = 1;
                actionUpdate = RESTRICT_UPDATE;
            }
            if( action == Constraint::cascade )
            {
                updateProp = 2;
                actionUpdate = CASCADE_UPDATE;
            }
            if( action == Constraint::setNull )
            {
                updateProp = 3;
                actionUpdate = SET_NULL_UPDATE;
            }
            if( action == Constraint::noAction )
            {
                updateProp = 0;
                actionUpdate = NO_ACTION_UPDATE;
            }
            if( action == Constraint::setDefault )
            {
                updateProp = 4;
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:

示例3: OnDropTable


//.........这里部分代码省略.........
        constraint = sign->GetConstraint();
        constraint->GetLocalColumns( localColumns );
        constraint->GetRefColumns( refColumn );
        match = constraint->GetPGMatch();
    }
    int eventId = event.GetId();
    if( eventId == wxID_DROPOBJECT )
    {
        wxString message = _( "You are about to delete " );
        if( isTable )
            message += _( "table " ) + name + _( ". Are you sure?" );
        else
        {
            message += _( "foreign key " );
            wxString fkName = constraint->GetName();
            if( !fkName.empty() )
                message += fkName;
            else
                message += _( " on " ) + const_cast<DatabaseTable *>( constraint->GetFKTable() )->GetTableName() + _( " references " ) + constraint->GetRefTable() + _( ". Are you sure?" );
        }
        answer = wxMessageBox( message, _( "Database" ), wxYES_NO | wxNO_DEFAULT );
    }
    else
        answer = wxYES;
    if( answer == wxYES )
    {
        if( isTable && ( ( eventId == wxID_DROPOBJECT && !db->DeleteTable( name.ToStdWstring(), errors ) ) || eventId != wxID_DROPOBJECT ) )
        {
            if( m_realSelectedShape == m_selectedShape )
            {
                m_realSelectedShape = NULL;
                ShapeList listShapes;
                m_pManager.GetShapes( CLASSINFO( MyErdTable ), listShapes );
                int size = listShapes.size();
                if( listShapes.size() == 1 )
                    m_realSelectedShape = NULL;
                else
                {
                    MyErdTable *tableToRemove = (MyErdTable *) ( listShapes.Item( size - 1 )->GetData() );
                    if( tableToRemove == erdTable )
                        m_realSelectedShape = (MyErdTable *) ( listShapes.Item( size - 2 )->GetData() );
                    else
                    {
                        bool found = false;
                        int i;
                        for( i = 0; i < size - 1 || !found; i++ )
                            if( listShapes.Item( i )->GetData() == erdTable )
                                found = true;
                        m_realSelectedShape = listShapes.Item( i + 1 )->GetData();
                    }
                }
            }
            m_pManager.RemoveShape( erdTable );
/*            for( ShapeList::iterator it = listShapes.begin(); it != listShapes.end() || !nextShapeFound; ++it )
            {
                CommentFieldShape *shape = wxDynamicCast( (*it), CommentFieldShape );
                if( m_showComments )
                {
                    shape->SetText( const_cast<Field *>( shape->GetFieldForComment() )->GetComment() );
                }
                else
                {
                    shape->SetText( wxEmptyString );
                }
            }*/
            std::map<std::wstring, std::vector<DatabaseTable *> > tables = db->GetTableVector().m_tables;
            std::vector<DatabaseTable *> tableVec = tables.at( db->GetTableVector().m_dbName );
            std::vector<std::wstring> &names = doc->GetTableNameVector();
            if( event.GetId() == wxID_DROPOBJECT )
            {
                tableVec.erase( std::remove( tableVec.begin(), tableVec.end(), table ), tableVec.end() );
            }
            else
                names.erase( std::remove( names.begin(), names.end(), table->GetTableName() ), names.end() );
/*            if( m_realSelectedShape == m_selectedShape )
            {
                
            }
            else
            {*/
                if( m_realSelectedShape )
                    m_realSelectedShape->Select( true );
//            }
        }
        else if( !isTable && !db->ApplyForeignKey( command, constraint->GetName().ToStdWstring(), *( const_cast<DatabaseTable *>( constraint->GetFKTable() ) ), localColumns, constraint->GetRefTable().ToStdWstring(), refColumn, constraint->GetOnDelete(), constraint->GetOnUpdate(), false, newFK, false, match, errors ) )
        {
            sign->DeleteConstraint();
            m_pManager.RemoveShape( sign->GetParentShape() );
            Refresh();
        }
        else
        {
            for( std::vector<std::wstring>::iterator it = errors.begin(); it < errors.end(); it++ )
            {
                wxMessageBox( (*it) );
            }
        }
    }
    Refresh();
}
开发者ID:,项目名称:,代码行数:101,代码来源:


注:本文中的Constraint::GetOnUpdate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。