diff --git a/src/providers/postgres/qgspostgresprovider.cpp b/src/providers/postgres/qgspostgresprovider.cpp index c7a0208006a..0625fd264d2 100644 --- a/src/providers/postgres/qgspostgresprovider.cpp +++ b/src/providers/postgres/qgspostgresprovider.cpp @@ -1054,9 +1054,9 @@ bool QgsPostgresProvider::loadFields() QgsField newField = QgsField( fieldName, fieldType, fieldTypeName, fieldSize, fieldPrec, fieldComment, fieldSubType ); QgsFieldConstraints constraints; - if ( notNullMap[tableoid][attnum] || mPrimaryKeyAttrs.contains( i ) ) + if ( notNullMap[tableoid][attnum] || ( mPrimaryKeyAttrs.size() == 1 && mPrimaryKeyAttrs[0] == i ) || identityMap[tableoid][attnum] != ' ' ) constraints.setConstraint( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider ); - if ( uniqueMap[tableoid][attnum] || mPrimaryKeyAttrs.contains( i ) ) + if ( uniqueMap[tableoid][attnum] || ( mPrimaryKeyAttrs.size() == 1 && mPrimaryKeyAttrs[0] == i ) || identityMap[tableoid][attnum] != ' ' ) constraints.setConstraint( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintOriginProvider ); newField.setConstraints( constraints ); @@ -1453,13 +1453,13 @@ bool QgsPostgresProvider::determinePrimaryKey() determinePrimaryKeyFromUriKeyColumn(); } - Q_FOREACH ( int fieldIdx, mPrimaryKeyAttrs ) + if ( mPrimaryKeyAttrs.size() == 1 ) { //primary keys are unique, not null - QgsFieldConstraints constraints = mAttributeFields.at( fieldIdx ).constraints(); + QgsFieldConstraints constraints = mAttributeFields.at( mPrimaryKeyAttrs[0] ).constraints(); constraints.setConstraint( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintOriginProvider ); constraints.setConstraint( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider ); - mAttributeFields[ fieldIdx ].setConstraints( constraints ); + mAttributeFields[ mPrimaryKeyAttrs[0] ].setConstraints( constraints ); } mValid = mPrimaryKeyType != PktUnknown;