# Derby server-side programming

This section discusses special programming for Derby.

In particular, this section discusses how to program database-side routines, triggers, table functions, types, and aggregates.

- Programming database-side JDBC routines
  Methods invoked within an application are called application-side methods. Methods invoked within Derby are called database-side routines.
- Programming trigger actions
  Derby allows you to create triggers. When you create a trigger, you define an action or set of actions that are executed when a database event occurs on a specified table. A database event is a delete, insert, or update operation.
- Programming Derby-style table functions
  Derby lets you create table functions. Table functions are functions which package up external data to look like Derby tables. The external data can be an XML file, a table in a foreign database, a live data feed--in short, any information source that can be presented as a JDBC ResultSet.
- Programming user-defined types
  Derby allows you to create user-defined types. A user-defined type is a serializable Java class whose instances are stored in columns. The class must implement the java.io.Serializable interface, and it must be declared to Derby by means of a CREATE TYPE statement.
- Programming user-defined aggregates
  Derby allows you to create custom aggregate operators, called user-defined aggregates (UDAs).