# Table Node

## Overview

The `Table` object supports defining table-level events such as `onCreate`, `onUpdate`, and `onDelete`. These methods can control operations by allowing or preventing actions based on custom logic. For instance, `onValidate` can validate a record before insertion, while `onAfterInsert` is triggered post-insertion for additional operations.

Additionally, events like `onSearch` and `onFind` enable customization of foundset searches. Events such as `onFoundSetLoad` and `onFoundsetNextChunk` are useful for managing in-memory or view-based datasets.

The `columns` property allows for detailed configuration and interaction with the database schema.

For a broader understanding of database-level features and capabilities, refer to the [Database Server](https://docs.servoy.com/reference/servoy-developer/solution-explorer/resources/database-servers/database-server) documentation.

## Properties Summarized

| Type                                                     | Name                | Summary |
| -------------------------------------------------------- | ------------------- | ------- |
| [Object](/reference/servoycore/dev-api/js-lib/object.md) | [columns](#columns) |         |

## Events Summarized

| Type                                                                     | Name                                                                                                                      | Summary                                                                                                 |
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| void                                                                     | [onAfterCreate(record)](#onaftercreate-record)                                                                            | A method that is executed after a new record is created.                                                |
| void                                                                     | [onAfterDelete(record)](#onafterdelete-record)                                                                            | A method that is executed after a delete operation.                                                     |
| void                                                                     | [onAfterFind()](#onafterfind)                                                                                             | A method that is executed after a foundset has switched to find mode.                                   |
| void                                                                     | [onAfterInsert(record)](#onafterinsert-record)                                                                            | A method that is executed after an insert operation.                                                    |
| void                                                                     | [onAfterSearch()](#onaftersearch)                                                                                         | A method that is executed after a search is executed for a foundset.                                    |
| void                                                                     | [onAfterUpdate(record)](#onafterupdate-record)                                                                            | A method that is executed after an update operation.                                                    |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onCreate()](#oncreate)                                                                                                   | A method that is executed before a record is created.                                                   |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onDelete(record)](#ondelete-record)                                                                                      | A method that is executed before a delete operation.                                                    |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onFind()](#onfind)                                                                                                       | A method that is executed before a foundset is going into find mode.                                    |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onFoundSetBeforeSelectionChange(oldSelection, newSelection)](#onfoundsetbeforeselectionchange-oldselection-newselection) | A method that is executed before a foundset selection change operation.                                 |
| void                                                                     | [onFoundSetLoad(memOrViewName)](#onfoundsetload-memorviewname)                                                            | A method that is executed when an in memory or viewfoundset table is first touched (by ui or scripting) |
| [JSDataSet](/reference/servoycore/dev-api/database-manager/jsdataset.md) | [onFoundsetNextChunk(inmemDataSourceName, sizeHint)](#onfoundsetnextchunk-inmemdatasourcename-sizehint)                   | A method that can be used to load extra data in an in memory datasource.                                |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onInsert(record, recordMarkers, stateObject)](#oninsert-record-recordmarkers-stateobject)                                | A method that is executed before an insert operation.                                                   |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onSearch(clearLastResults, reduceSearch)](#onsearch-clearlastresults-reducesearch)                                       | A method that is executed before search() is called on a foundset in find mode.                         |
| [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)               | [onUpdate(record, recordMarkers, stateObject)](#onupdate-record-recordmarkers-stateobject)                                | A method that is executed before an update operation.                                                   |
| void                                                                     | [onValidate(record, recordMarkers, stateObject)](#onvalidate-record-recordmarkers-stateobject)                            | A method that is executed before an insert operation.                                                   |

## Properties Detailed

### columns

**Type**\
[Object](/reference/servoycore/dev-api/js-lib/object.md)

## Events Detailed

### onAfterCreate(record)

A method that is executed after a new record is created.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that is created

**Returns:** void

### onAfterDelete(record)

A method that is executed after a delete operation.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that is deleted

**Returns:** void

### onAfterFind()

A method that is executed after a foundset has switched to find mode.

**Returns:** void

### onAfterInsert(record)

A method that is executed after an insert operation.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that is inserted

**Returns:** void

### onAfterSearch()

A method that is executed after a search is executed for a foundset.

**Returns:** void

### onAfterUpdate(record)

A method that is executed after an update operation.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that is updated

**Returns:** void

### onCreate()

A method that is executed before a record is created. The method can block the creation by returning false.

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onDelete(record)

A method that is executed before a delete operation. The method can block the delete operation by returning false.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that will be deleted

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onFind()

A method that is executed before a foundset is going into find mode. The method can block the mode change.

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onFoundSetBeforeSelectionChange(oldSelection, newSelection)

A method that is executed before a foundset selection change operation. The method can cancel the selection change operation by returning false.

**Parameters**

* [JSRecord<${dataSource}>|Array\<JSRecord<${dataSource}>>](https://github.com/Servoy/gitbook/blob/master/reference/servoycore/object-model/solution/jsrecord%3C$%7Bdatasource%7D%3E%7Carray%3Cjsrecord%3C$%7Bdatasource%7D%3E%3E.md) **oldSelection** array with selected records
* [JSRecord<${dataSource}>|Array\<JSRecord<${dataSource}>>](https://github.com/Servoy/gitbook/blob/master/reference/servoycore/object-model/solution/jsrecord%3C$%7Bdatasource%7D%3E%7Carray%3Cjsrecord%3C$%7Bdatasource%7D%3E%3E.md) **newSelection** array with records that will become selected

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onFoundSetLoad(memOrViewName)

A method that is executed when an in memory or viewfoundset table is first touched (by ui or scripting)

**Parameters**

* [String](/reference/servoycore/dev-api/js-lib/string.md) **memOrViewName** The in memory or view foundset table name that is touched.

**Returns:** void

### onFoundsetNextChunk(inmemDataSourceName, sizeHint)

A method that can be used to load extra data in an in memory datasource.

This method id called when the inMem datasource is fully read.

**Parameters**

* [String](/reference/servoycore/dev-api/js-lib/string.md) **inmemDataSourceName** name of the inmemory datasource.
* [Number](/reference/servoycore/dev-api/js-lib/number.md) **sizeHint** preferred number of records to be retrieved.

**Returns:** [JSDataSet](/reference/servoycore/dev-api/database-manager/jsdataset.md)

### onInsert(record, recordMarkers, stateObject)

A method that is executed before an insert operation. The method can block the insert operation by returning false.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that will be inserted
* [JSRecordMarkers](/reference/servoycore/dev-api/database-manager/jsrecordmarkers.md) **recordMarkers** the object where all the problems can be reported against
* [Object](/reference/servoycore/dev-api/js-lib/object.md) **stateObject** an object that a user can give to validateRecord for extra state (optional, can be null).

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onSearch(clearLastResults, reduceSearch)

A method that is executed before search() is called on a foundset in find mode. The method can block the search (foundset will stay in find mode).

**Parameters**

* [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md) **clearLastResults** ;
* [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md) **reduceSearch** ;

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onUpdate(record, recordMarkers, stateObject)

A method that is executed before an update operation. A method can block the update by returning false.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that will be updated
* [JSRecordMarkers](/reference/servoycore/dev-api/database-manager/jsrecordmarkers.md) **recordMarkers** the object where all the problems can be reported against
* [Object](/reference/servoycore/dev-api/js-lib/object.md) **stateObject** an object that a user can give to validateRecord for extra state (optional, can be null).

**Returns:** [Boolean](/reference/servoycore/dev-api/js-lib/boolean.md)

### onValidate(record, recordMarkers, stateObject)

A method that is executed before an insert operation. The method can block the insert operation by returning false.

**Parameters**

* [JSRecord](/reference/servoycore/dev-api/database-manager/jsrecord.md) **record** record that must be validated
* [JSRecordMarkers](/reference/servoycore/dev-api/database-manager/jsrecordmarkers.md) **recordMarkers** the object where all the problems can be reported against.
* [Object](/reference/servoycore/dev-api/js-lib/object.md) **stateObject** an object that a user can give to validateRecord for extra state (optional, can be null).

**Returns:** void

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.servoy.com/reference/servoycore/object-model/solution/table.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
