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
if( output_type == MORM_OUTPUT_TYPE_DB_PRIMARY_KEY ||
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();
}
@ -106,7 +107,8 @@ void DbExpression::field_before()
(*out_stream) << " AND ";
}
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) << ", ";
}

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 &&
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_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();
}

View File

@ -76,10 +76,12 @@
#define MORM_OUTPUT_TYPE_DB_UPDATE 3
// 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_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