DISCONNECT
Prev | Connection and Initialisation | Next

## Name

DISCONNECT — close a database connectionFunction

## Syntax

    disconnect &key database error => result

## Arguments and Values

`error`

  A boolean flag indicating whether to signal an error if `database` is non-`NIL` but cannot be found.

`database`

  The database to disconnect, which defaults to the database indicated by *default-database*.

`result`

  A Boolean indicating whether a connection was successfully disconnected.

## Description

This function takes a database object as returned by `connect`, and closes the connection. If no matching database is found and `error` and `database` are both non-`NIL` an error is signaled, otherwise `NIL` is returned. If the database is from a pool it will be released to this pool.

The status of the object passed is changed to closed after the disconnection succeeds, thereby preventing further use of the object as an argument to CLSQL functions, with the exception of `database-name` and `database-type`. If the user does pass a closed database to any other CLSQL function, an error of type sql-fatal-error is signalled.

## Examples

    (disconnect :database (find-database "dent/newesim/dent"))
    => T

## Side Effects

The database object is removed from the list of connected databases as returned by `connected-databases`.

If the database object passed is the same under `eq` as the value of *default-database*, then *default-database* is set to the first remaining database from `connected-databases` or to `NIL` if no further active database exists.

### Non-pooled

The database connection is closed and the state of the database object is changed to closed.

### Pooled

Unless there are already *db-pool-max-free-connections* free connections in the pool it is returned to the pool, with the backend having an opportunity to run generic cleanup on the connection first. If the max free connections has already been reached then it is disconnected as if it were not in the pool.

## Affected by

*default-database*
*db-pool-max-free-connections*

## Exceptional Situations

If during the disconnection attempt an error is detected (e.g. because of network trouble or any other cause), an error of type sql-error might be signalled.

## See Also

`connect`
`disconnect-pooled`

## Notes

None.

Prev | Up | Next
DATABASE-TYPE | Home | DISCONNECT-POOLED