@@ -1201,23 +1201,60 @@ let tree = (function(){
12011201 ret += 'insert into ' + objName + ' (\n' ;
12021202 let idColName = this . getGenIdColName ( ) ;
12031203 if ( idColName != null ) {
1204- ret += tab + idColName + ',\n' ;
1204+ ret += tab + idColName + ',\n' ;
1205+ } else {
1206+ let pkNode = this . getExplicitPkNode ( ) ;
1207+ if ( pkNode != null ) {
1208+ ret += tab + pkNode . parseName ( ) + ',\n' ;
1209+ }
12051210 }
12061211 for ( let fk in this . fks ) {
1207- let parent = this . fks [ fk ] ;
1208- ret += tab + singular ( parent ) + '_id,\n' ;
1212+ let parent = this . fks [ fk ] ;
1213+ let refNode = ddl . find ( parent ) ;
1214+ let _id = '' ;
1215+ if ( refNode == null ) {
1216+ refNode = ddl . find ( fk ) ;
1217+ if ( refNode . isMany2One ( ) & ! fk . endsWith ( '_id' ) ) {
1218+ parent = fk ;
1219+ fk = singular ( fk ) ;
1220+ _id = '_id' ;
1221+ }
1222+ }
1223+ ret += tab + fk + _id + ',\n' ;
12091224 }
12101225 for ( let j = 0 ; j < this . children . length ; j ++ ) {
1211- let child = this . children [ j ] ;
1212- if ( 0 == child . children . length )
1213- ret += tab + child . parseName ( ) + ',\n' ;
1226+ let child = this . children [ j ] ;
1227+ if ( idColName != null && child . parseName ( ) == 'id' )
1228+ continue ;
1229+ if ( child . refId ( ) == null ) {
1230+ if ( child == this . getExplicitPkNode ( ) )
1231+ continue ; //ret += '--';
1232+ if ( 0 == child . children . length )
1233+ ret += tab + child . parseName ( ) + ',\n' ;
1234+ }
12141235 }
12151236 if ( ret . lastIndexOf ( ',\n' ) == ret . length - 2 )
12161237 ret = ret . substr ( 0 , ret . length - 2 ) + '\n' ;
1238+
12171239 ret += ') values (\n' ;
1218- if ( ddl . optionEQvalue ( 'Auto Primary Key' , 'yes' ) ) {
1219- ret += tab + ( i + 1 ) + ',\n' ;
1240+
1241+ if ( idColName != null ) {
1242+ ret += tab + ( i + 1 ) + ',\n' ;
1243+ } else {
1244+ let pkNode = this . getExplicitPkNode ( ) ;
1245+ if ( pkNode != null ) {
1246+ const field = pkNode . parseName ( ) ;
1247+ let tmp = getValue ( ddl . data , null /*no name at level 0*/ , field , this . parseName ( ) ) ;
1248+ let v = - 1 ;
1249+ if ( elem != null )
1250+ v = elem [ field ] ;
1251+ if ( tmp != null && tmp [ i ] != null ) {
1252+ v = tmp [ i ] ;
1253+ }
1254+ ret += tab + ( v != null ? v : i + 1 ) + ',\n' ;
1255+ }
12201256 }
1257+
12211258 for ( let fk in this . fks ) {
12221259 let ref = this . fks [ fk ] ;
12231260 let refNode = ddl . find ( ref ) ;
@@ -1246,23 +1283,29 @@ let tree = (function(){
12461283 }
12471284 for ( let j = 0 ; j < this . children . length ; j ++ ) {
12481285 let child = this . children [ j ] ;
1249- if ( 0 == child . children . length ) {
1250- let values = child . parseValues ( ) ;
1251- let cname = child . parseName ( ) ;
1252- if ( elem != null ) {
1253- let v = elem [ cname ] ;
1254- if ( v != null ) {
1286+ if ( idColName != null && child . parseName ( ) == 'id' )
1287+ continue ;
1288+ if ( child . refId ( ) == null ) {
1289+ if ( child == this . getExplicitPkNode ( ) )
1290+ continue ; //ret += '--';
1291+ if ( 0 == child . children . length ) {
1292+ let values = child . parseValues ( ) ;
1293+ let cname = child . parseName ( ) ;
1294+ if ( elem != null ) {
1295+ let v = elem [ cname ] ;
1296+ if ( v != null ) {
1297+ values = [ ] ;
1298+ values [ 0 ] = v ;
1299+ }
1300+ }
1301+ let tmp = getValue ( ddl . data , null /*no name at level 0*/ , cname , this . parseName ( ) ) ;
1302+ if ( tmp != null && tmp [ i ] != null ) {
12551303 values = [ ] ;
1256- values [ 0 ] = v ;
1257- }
1258- }
1259- let tmp = getValue ( ddl . data , null /*no name at level 0*/ , cname , this . parseName ( ) ) ;
1260- if ( tmp != null && tmp [ i ] != null ) {
1261- values = [ ] ;
1262- values [ 0 ] = tmp [ i ] ;
1304+ values [ 0 ] = tmp [ i ] ;
1305+ }
1306+ let datum = sample ( objName , cname , child . parseType ( ) , values ) ;
1307+ ret += tab + translate ( ddl . getOptionValue ( 'Data Language' ) , datum ) + ',\n' ;
12631308 }
1264- let datum = sample ( objName , cname , child . parseType ( ) , values ) ;
1265- ret += tab + translate ( ddl . getOptionValue ( 'Data Language' ) , datum ) + ',\n' ;
12661309 }
12671310 }
12681311 if ( ret . lastIndexOf ( ',\n' ) == ret . length - 2 )
0 commit comments