# File sql-serialize.rb, line 225
  def sql_assoc_id (dbi)
    # if it is already defined, just return it

    if (defined? @sql_assoc_id)
      if (!@sql_assoc_id.nil?)
        return @sql_assoc_id
      end
    end
    # see if it is in the database

    pk = self.instance_eval("@" << @sql_primary_key.id2name)
    sql = "SELECT " << sql_quote_name("sql_assoc_id") 
    sql << " FROM " << sql_quote_name(self.type.name.sub(/#<Module .*?>::/, "")) << " WHERE "
    sql << sql_quote_name(@sql_primary_key.id2name) << " = "
    if (pk.kind_of? Numeric)
      sql << pk.to_s
    else
      sql << sql_quote_str(pk.to_s)
    end

    dbi.select_all (sql) { |row|
      @sql_assoc_id = row["sql_assoc_id"]
    }
    # if it wasn't in the database, fetch a new one

    if (@sql_assoc_id.nil?)
      @sql_assoc_id = sql_fetch_next_id (dbi)
    end
    return @sql_assoc_id
  end