# File sql-serialize.rb, line 563
  def sql_delete_assocs (dbi)
    rows = Array.new

    ["array", "hash", "assoc"].each { |range|
      sql = "SELECT id, class FROM "
      sql << sql_quote_name(self.type.name.sub(/#<Module .*?>::/, "") + "_" + range) << ", "
      sql << sql_quote_name("sql_ids")
      sql << "WHERE id = val_id AND sql_assoc_id = " << sql_assoc_id(dbi).to_s
      dbi.select_all(sql) { |row|
        # if it is a simple type (no associated objects), then just delete it

        if (["Boolean", "Bignum", "Exception", "File", "Fixnum", 
              "Float", "Date", "String", "Time"].include? row["class"])
          sql = "DELETE FROM " << sql_quote_name("sql_ids") << " WHERE "
          sql << sql_quote_name("id") << " = " << row["id"].to_s
          dbi.do_more(sql)
        else # otherwise it must have SQLSerializable mixed in

          obj = instance_eval(row["class"] + ".new")
          obj.sql_assoc_id = row["id"]
          # recursive delete

          obj.delete(dbi, false)
        end
      }
    }
  end