# JSBaseSqlRecord

## Overview

`JSBaseSQLRecord` serves as the foundational type for records in SQL-based foundsets, such as those in `JSFoundSet` or `ViewFoundSet`. It extends `JSBaseRecord`, inheriting its base functionality while introducing features tailored to SQL data handling. The `exception` property handles errors at the record level, while `foundset` links the record to its originating dataset. Additionally, `recordMarkers` facilitates the attachment of metadata or annotations directly to records.

Key methods include `createMarkers`, which generates detailed annotations for a record, and `getChangedData`, which retrieves altered data within a record. The `getPKs` method identifies associated primary keys, while `hasChangedData` confirms if modifications exist. Editing states are managed through `isEditing`, which checks if a record is in edit mode, and `isNew`, which identifies newly created records. Relationship management is supported by `isRelatedFoundSetLoaded`, ensuring related datasets are loaded. The `revertChanges` method enables rolling back unsaved modifications.

## **Extends**

[JSBaseRecord](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsbaserecord)

## Properties Summarized

| Type                                                                                                     | Name                            | Summary |
| -------------------------------------------------------------------------------------------------------- | ------------------------------- | ------- |
| [Exception](https://github.com/Servoy/gitbook/blob/master/reference/servoycore/dev-api/exception.md)     | [exception](#exception)         |         |
| [JSFoundSet](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsfoundset)           | [foundset](#foundset)           |         |
| [JSRecordMarkers](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsrecordmarkers) | [recordMarkers](#recordmarkers) |         |

## Methods Summarized

| Type                                                                                                     | Name                                                                           | Summary |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------- |
| [JSRecordMarkers](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsrecordmarkers) | [createMarkers()](#createmarkers)                                              |         |
| [JSDataSet](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsdataset)             | [getChangedData()](#getchangeddata)                                            |         |
| [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string)                             | [getDataSource()](#getdatasource)                                              |         |
| [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array)                               | [getPKs()](#getpks)                                                            |         |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)                           | [hasChangedData()](#haschangeddata)                                            |         |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)                           | [isEditing()](#isediting)                                                      |         |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)                           | [isNew()](#isnew)                                                              |         |
| [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean)                           | [isRelatedFoundSetLoaded(relationName)](#isrelatedfoundsetloaded-relationname) |         |
| void                                                                                                     | [revertChanges()](#revertchanges)                                              |         |

## Properties Detailed

### exception

**Type**\
[Exception](https://github.com/Servoy/gitbook/blob/master/reference/servoycore/dev-api/exception.md) the exception associated with this record, or null if no exception exists.

### foundset

**Type**\
[JSFoundSet](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsfoundset) the foundset to which this record belongs.

### recordMarkers

**Type**\
[JSRecordMarkers](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsrecordmarkers) the record markers associated with this record.

## Methods Detailed

### createMarkers()

**Returns:** [JSRecordMarkers](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsrecordmarkers) newly created record markers for this record.

### getChangedData()

**Returns:** [JSDataSet](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/jsdataset) a dataset containing the changed data for this record.

### getDataSource()

**Returns:** [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) the data source associated with this record.

### getPKs()

**Returns:** [Array](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/array) an array of primary key values associated with this record.

### hasChangedData()

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) true if the record has modified data; false otherwise.

### isEditing()

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) true if the record is in edit mode; false otherwise.

### isNew()

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) true if the record is newly created and not yet saved; false otherwise.

### isRelatedFoundSetLoaded(relationName)

**Parameters**

* [String](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/string) **relationName** ;

**Returns:** [Boolean](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/boolean) true if the related foundset for the given relation name is loaded; false otherwise.

### revertChanges()

**Returns:** void

***
