- error = ovsdb_txn_row_from_json(txn, table, &row_uuid, txn_row_json);
- if (error) {
- return error;
+ LIST_FOR_EACH (t, struct ovsdb_txn_table, node, &txn->txn_tables) {
+ struct ovsdb_txn_row *r;
+
+ HMAP_FOR_EACH (r, struct ovsdb_txn_row, hmap_node, &t->txn_rows) {
+ if (!r->new && r->old->n_refs) {
+ error = ovsdb_error("referential integrity violation",
+ "cannot delete %s row "UUID_FMT" because "
+ "of %zu remaining reference(s)",
+ t->table->schema->name,
+ UUID_ARGS(ovsdb_row_get_uuid(r->old)),
+ r->old->n_refs);
+ ovsdb_txn_rollback_counts(txn);
+ return error;
+ }