@@ -1382,7 +1382,10 @@ def delete_record(self, cascade:bool=True): # TODO: check return type, we return
1382
1382
return
1383
1383
1384
1384
# Delete child records first!
1385
- self .driver .delete_record (self , True )
1385
+ result = self .driver .delete_record (self , True )
1386
+
1387
+ if result .exception is not None :
1388
+ sg .popup (f"Query Failed! { result .exception } " , keep_on_top = True )
1386
1389
1387
1390
# callback
1388
1391
if 'after_delete' in self .callbacks .keys ():
@@ -4304,10 +4307,12 @@ def generate_query(self, dataset: DataSet, join_clause: bool = True, where_claus
4304
4307
def delete_record (self , dataset : DataSet , cascade = True ): # TODO: get ON DELETE CASCADE from db
4305
4308
# Delete child records first!
4306
4309
if cascade :
4310
+ child_deleted = []
4307
4311
for _ in dataset .frm .datasets :
4308
4312
for r in dataset .frm .relationships :
4309
- if r .parent_table == dataset .table :
4313
+ if r .parent_table == dataset .table and r . update_cascade and ( r . child_table not in child_deleted ) :
4310
4314
child = self .quote_table (r .child_table )
4315
+ child_deleted .append (child )
4311
4316
fk_column = self .quote_column (r .fk_column )
4312
4317
q = f'DELETE FROM { child } WHERE { fk_column } ={ dataset .get_current (dataset .pk_column )} '
4313
4318
self .execute (q )
@@ -4317,7 +4322,7 @@ def delete_record(self, dataset: DataSet, cascade=True): # TODO: get ON DELETE C
4317
4322
table = self .quote_table (dataset .table )
4318
4323
pk_column = self .quote_column (dataset .pk_column )
4319
4324
q = f'DELETE FROM { table } WHERE { pk_column } ={ dataset .get_current (dataset .pk_column )} ;'
4320
- self .execute (q )
4325
+ return self .execute (q )
4321
4326
4322
4327
def duplicate_record (self , dataset : DataSet , cascade : bool ) -> ResultSet :
4323
4328
## https://stackoverflow.com/questions/1716320/how-to-insert-duplicate-rows-in-sqlite-with-a-unique-id
0 commit comments