fix: only insert primary keys from the first descendant childs

This commit is contained in:
Tomasz Sowa 2022-05-11 23:18:25 +02:00
parent 469294502e
commit df44296c04
3 changed files with 10 additions and 4 deletions

View File

@ -76,7 +76,8 @@ bool DbExpression::can_field_be_generated(const FT & field_type)
else else
if( output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY || if( output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY ||
output_type == MORM_OUTPUT_TYPE_JOIN_TABLES || output_type == MORM_OUTPUT_TYPE_JOIN_TABLES ||
output_type == MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY ) output_type == MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY ||
output_type == MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY )
{ {
return field_type.is_primary_key(); return field_type.is_primary_key();
} }
@ -106,7 +107,8 @@ void DbExpression::field_before()
(*out_stream) << " AND "; (*out_stream) << " AND ";
} }
else else
if( output_type == MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY ) if( output_type == MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY ||
output_type == MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY )
{ {
(*out_stream) << ", "; (*out_stream) << ", ";
} }

View File

@ -1458,7 +1458,9 @@ void Model::field_model_generate_db_sql(const wchar_t * db_field_name, Model & f
if( db_expression->get_output_type() != MORM_OUTPUT_TYPE_JOIN_TABLES && if( db_expression->get_output_type() != MORM_OUTPUT_TYPE_JOIN_TABLES &&
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_PRIMARY_KEY && db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_PRIMARY_KEY &&
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_INSERT && db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_INSERT &&
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_UPDATE ) db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_UPDATE &&
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY &&
db_expression->get_output_type() != MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY )
{ {
field_model.fields(); field_model.fields();
} }

View File

@ -76,10 +76,12 @@
#define MORM_OUTPUT_TYPE_DB_UPDATE 3 #define MORM_OUTPUT_TYPE_DB_UPDATE 3
// change to something like MORM_OUTPUT_TYPE_DB_WHERE_PRIMARY_KEY // change to something like MORM_OUTPUT_TYPE_DB_WHERE_PRIMARY_KEY
// put a primary key
#define MORM_OUTPUT_TYPE_DB_PRIMARY_KEY 4 #define MORM_OUTPUT_TYPE_DB_PRIMARY_KEY 4
#define MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY 5 #define MORM_OUTPUT_TYPE_DB_INSERT_PRIMARY_KEY 5
#define MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY 5 #define MORM_OUTPUT_TYPE_DB_UPDATE_PRIMARY_KEY 6
//#define MORM_OUTPUT_TYPE_WHERE_CUSTOM 7 //#define MORM_OUTPUT_TYPE_WHERE_CUSTOM 7