# File lib/flexirecord.rb, line 1136
1136:       def reload
1137:         synchronize do
1138:           if self.class.primary_columns.empty?
1139:             raise "Can not reload a record, which has no primary key."
1140:           end
1141:           unless self.saved?
1142:             raise "Can not reload a record, which has not been saved yet."
1143:           end
1144:           reloaded_record = self.class.db_query1(
1145:             'SELECT * FROM ' << self.class.table <<
1146:             'WHERE ' << (self.class.primary_columns.collect { |column| '"' << column << '" = $' }.join(' AND ')),
1147:             *(
1148:               self.class.primary_columns.collect { |column| @old_primary_key[column] }
1149:             )
1150:           )
1151:           if reloaded_record.nil?
1152:             raise DatabaseError, "Could not reload data."
1153:           end
1154:           new_data_hash = {}
1155:           self.class.columns.each { |column| new_data_hash[[column]] = reloaded_record.read(column) }
1156:           @data_hash = new_data_hash
1157:           return self
1158:         end
1159:       end