# File sql-serialize.rb, line 511
  def sql_insert_assoc (dbi)
    instance_variables.each { |var|
      val = self.instance_eval(var)
      val_id = nil
      if (var.index("@sql_")==0)
        next # ignore meta data

      elsif (val.respond_to? :insert)
        val_id = val.instance_eval("sql_exist_in_db?(ObjectSpace._id2ref(" + dbi.id.to_s + "))")
        unless val_id
          val_id = val.insert (dbi, false) # insert but don't start a new transaction

        end
        sql_increase_refcount (dbi, val_id)
      elsif ((val.kind_of? TrueClass) || 
             (val.kind_of? FalseClass))
        bool = val ? 1 : 0 # bools are encoded as 1/0 here

        val_id = sql_basic_insert(dbi, bool, "Boolean")
      end

      unless (val_id.nil?)
        # if an associated object was found, then

        # insert a reference in the classname_assoc table.

        sql = "INSERT INTO " << sql_quote_name(self.type.name.sub(/#<Module .*?>::/, "") + "_assoc") << " ("
        sql << sql_quote_name("sql_assoc_id") << ", " << sql_quote_name("symbol")
        sql << ", " << sql_quote_name("val_id") << ") VALUES (" 
        sql << sql_assoc_id(dbi).to_s << ", " << sql_quote_str(var[1,var.length])
        sql << ", " << val_id.to_s << ")"
        dbi.do_more(sql)
      end
    }
  end