@unthrown/drizzle / index
index
Builders
PgUnthrownCountBuilder
Defined in: packages/drizzle/src/pg-core/count.ts:37
A $count query that resolves to an AsyncResult.
Remarks
The one builder with no _prepare: it inherits from drizzle's PgCountBuilder, which is itself an SQL fragment, so it can be embedded in a larger query as well as run on its own. Running it prepares the count inline.
Extends
PgCountBuilder
Constructors
Constructor
new PgUnthrownCountBuilder(__namedParameters): PgUnthrownCountBuilder;Defined in: packages/drizzle/src/pg-core/count.ts:42
Parameters
| Parameter | Type |
|---|---|
__namedParameters | { dialect: PgDialect; filters?: SQL<unknown>; session: PgUnthrownSession<unknown>; source: | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | SQLWrapper<unknown>; } |
__namedParameters.dialect | PgDialect |
__namedParameters.filters? | SQL<unknown> |
__namedParameters.session | PgUnthrownSession<unknown> |
__namedParameters.source | | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | SQLWrapper<unknown> |
Returns
Overrides
PgCountBuilder.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | public | object | undefined | - | - | PgCountBuilder._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:61 |
_.brand | public | "SQL" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:62 |
_.type | public | number | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:63 |
queryChunks | readonly | SQLChunk[] | undefined | - | - | PgCountBuilder.queryChunks | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:59 |
then | readonly | ResultThen<number, never> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/count.ts:83 |
[entityKind] | readonly | string | "PgUnthrownCountBuilder" | - | PgCountBuilder.[entityKind] | - | packages/drizzle/src/pg-core/count.ts:38 |
Methods
append()
append(query): this;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:66
Parameters
| Parameter | Type |
|---|---|
query | SQL |
Returns
this
Inherited from
PgCountBuilder.appendas()
Call Signature
as(alias): Aliased<number>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:71
Parameters
| Parameter | Type |
|---|---|
alias | string |
Returns
Aliased<number>
Inherited from
PgCountBuilder.asCall Signature
as<TData>(): SQL<TData>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:76
Type Parameters
| Type Parameter |
|---|
TData |
Returns
SQL<TData>
Deprecated
Use sql\<DataType\>`query`.as(alias) instead.
Inherited from
PgCountBuilder.asCall Signature
as<TData>(alias): Aliased<TData>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:81
Type Parameters
| Type Parameter |
|---|
TData |
Parameters
| Parameter | Type |
|---|---|
alias | string |
Returns
Aliased<TData>
Deprecated
Use sql\<DataType\>`query`.as(alias) instead.
Inherited from
PgCountBuilder.asbuildQueryFromSourceParams()
buildQueryFromSourceParams(chunks, _config): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:68
Parameters
| Parameter | Type |
|---|---|
chunks | SQLChunk[] |
_config | BuildQueryConfig |
Returns
Query
Inherited from
PgCountBuilder.buildQueryFromSourceParamsexecute()
execute(placeholderValues?): AsyncResult<number, never>;Defined in: packages/drizzle/src/pg-core/count.ts:66
Run the count, resolving to the number of matching rows.
The error channel is never — a count is a read, so every failure it can hit is a defect. See runSafeQuery.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<number, never>
getSQL()
getSQL(): SQL<number>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:70
Returns
SQL<number>
Inherited from
PgCountBuilder.getSQLif()
if(condition): PgUnthrownCountBuilder | undefined;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:91
This method is used to conditionally include a part of the query.
Parameters
| Parameter | Type | Description |
|---|---|---|
condition | any | Condition to check |
Returns
PgUnthrownCountBuilder | undefined
itself if the condition is true, otherwise undefined
Inherited from
PgCountBuilder.ifinlineParams()
inlineParams(): this;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:84
Returns
this
Inherited from
PgCountBuilder.inlineParamsmapWith()
mapWith<TDecoder>(decoder): SQL<GetDecoderResult<TDecoder>>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:82
Type Parameters
| Type Parameter |
|---|
TDecoder extends | DriverValueDecoder<any, number> | DriverValueDecoderFn<any, number> |
Parameters
| Parameter | Type |
|---|---|
decoder | TDecoder |
Returns
SQL<GetDecoderResult<TDecoder>>
Inherited from
PgCountBuilder.mapWithnullable()
nullable(): SQL<number | null>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:83
Returns
SQL<number | null>
Inherited from
PgCountBuilder.nullabletoQuery()
toQuery(config): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:67
Parameters
| Parameter | Type |
|---|---|
config | BuildQueryConfig |
Returns
Query
Inherited from
PgCountBuilder.toQueryPgUnthrownDeleteBase
Defined in: packages/drizzle/src/pg-core/delete.ts:58
A delete query that resolves to an AsyncResult.
Remarks
Deleting a row another table still references raises a ForeignKeyViolation, which lands in the error channel rather than as a rejection.
Extends
PgDeleteBase<PgUnthrownDeleteHKT,TTable,TQueryResult,TSelectedFields,TReturning,TDynamic,TExcludedMethods>
Type Parameters
| Type Parameter | Default type |
|---|---|
TTable extends PgTable | - |
TQueryResult extends PgQueryResultHKT | - |
TSelectedFields extends ColumnsSelection | undefined | undefined |
TReturning extends Record<string, unknown> | undefined | undefined |
TDynamic extends boolean | false |
TExcludedMethods extends string | never |
Constructors
Constructor
new PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>(
table,
session,
dialect,
withList?): PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:66
Parameters
| Parameter | Type |
|---|---|
table | TTable |
session | PgSession |
dialect | PgDialect |
withList? | Subquery<string, Record<string, unknown>>[] |
Returns
PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>
Inherited from
PgDeleteBase<
PgUnthrownDeleteHKT,
TTable,
TQueryResult,
TSelectedFields,
TReturning,
TDynamic,
TExcludedMethods
>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgDeleteBase._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:49 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:50 |
_.dynamic | readonly | TDynamic | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:56 |
_.excludedMethods | readonly | TExcludedMethods | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:57 |
_.hkt | readonly | PgUnthrownDeleteHKT | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:51 |
_.queryResult | readonly | TQueryResult | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:53 |
_.result | readonly | TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[] | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:58 |
_.returning | readonly | TReturning | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:55 |
_.selectedFields | readonly | TSelectedFields | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:54 |
_.table | readonly | TTable | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:52 |
then | readonly | ResultThen<DeleteResult<TQueryResult, TReturning>> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/delete.ts:121 |
[entityKind] | readonly | string | "PgUnthrownDelete" | - | PgDeleteBase.[entityKind] | - | packages/drizzle/src/pg-core/delete.ts:74 |
Methods
$dynamic()
$dynamic(): PgUnthrownDeleteBase<Assume<TTable, PgTable<TableConfig>>>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:125
Returns
PgUnthrownDeleteBase<Assume<TTable, PgTable<TableConfig>>>
Inherited from
PgDeleteBase.$dynamiccomment()
comment(comment): PgDeleteWithout<PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "comment">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:122
Attach sqlcommenter comment to a query
Parameters
| Parameter | Type |
|---|---|
comment | CommentInput |
Returns
PgDeleteWithout<PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "comment">
Inherited from
PgDeleteBase.commentexecute()
execute(placeholderValues?): AsyncResult<DeleteResult<TQueryResult, TReturning>, PgQueryError>;Defined in: packages/drizzle/src/pg-core/delete.ts:113
Run the delete, resolving to its result or a PgQueryError.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<DeleteResult<TQueryResult, TReturning>, PgQueryError>
getSQL()
getSQL(): SQL;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:123
Returns
SQL
Inherited from
PgDeleteBase.getSQLprepare()
prepare(name): PgUnthrownPreparedQuery<PreparedQueryConfig & object>;Defined in: packages/drizzle/src/pg-core/delete.ts:104
Create a prepared statement for this query. This allows the database to remember this query for the given session and call it by name, rather than specifying the full query.
Postgres prepare documentation
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
PgUnthrownPreparedQuery<PreparedQueryConfig & object>
returning()
Call Signature
returning(): PgDeleteWithout<PgDeleteKind<PgUnthrownDeleteHKT, TTable, TQueryResult, TTable["_"]["columns"], TTable["$inferSelect"], TDynamic, TExcludedMethods>, TDynamic>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:117
Adds a returning clause to the query.
Calling this method will return the specified fields of the deleted rows. If no fields are specified, all fields will be returned.
See docs: https://orm.drizzle.team/docs/delete#delete-with-return
Returns
PgDeleteWithout<PgDeleteKind<PgUnthrownDeleteHKT, TTable, TQueryResult, TTable["_"]["columns"], TTable["$inferSelect"], TDynamic, TExcludedMethods>, TDynamic>
Example
// Delete all cars with the green color and return all fields
const deletedCars: Car[] = await db.delete(cars)
.where(eq(cars.color, 'green'))
.returning();
// Delete all cars with the green color and return only their id and brand fields
const deletedCarsIdsAndBrands: { id: number, brand: string }[] = await db.delete(cars)
.where(eq(cars.color, 'green'))
.returning({ id: cars.id, brand: cars.brand });Inherited from
PgDeleteBase.returningCall Signature
returning<TSelectedFields>(fields): PgDeleteWithout<PgDeleteKind<PgUnthrownDeleteHKT, TTable, TQueryResult, TSelectedFields, { [K in string | number | symbol]: { [Key in string | number | symbol]: SelectResultField<TSelectedFields[Key], true> }[K] }, TDynamic, TExcludedMethods>, TDynamic, "returning">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:118
Adds a returning clause to the query.
Calling this method will return the specified fields of the deleted rows. If no fields are specified, all fields will be returned.
See docs: https://orm.drizzle.team/docs/delete#delete-with-return
Type Parameters
| Type Parameter |
|---|
TSelectedFields extends SelectedFieldsFlat |
Parameters
| Parameter | Type |
|---|---|
fields | TSelectedFields |
Returns
PgDeleteWithout<PgDeleteKind<PgUnthrownDeleteHKT, TTable, TQueryResult, TSelectedFields, { [K in string | number | symbol]: { [Key in string | number | symbol]: SelectResultField<TSelectedFields[Key], true> }[K] }, TDynamic, TExcludedMethods>, TDynamic, "returning">
Example
// Delete all cars with the green color and return all fields
const deletedCars: Car[] = await db.delete(cars)
.where(eq(cars.color, 'green'))
.returning();
// Delete all cars with the green color and return only their id and brand fields
const deletedCarsIdsAndBrands: { id: number, brand: string }[] = await db.delete(cars)
.where(eq(cars.color, 'green'))
.returning({ id: cars.id, brand: cars.brand });Inherited from
PgDeleteBase.returningshouldOmitSQLParens()?
optional shouldOmitSQLParens(): boolean;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:49
Returns
boolean
Inherited from
PgDeleteBase.shouldOmitSQLParenstoSQL()
toSQL(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:124
Returns
Query
Inherited from
PgDeleteBase.toSQLwhere()
where(where): PgDeleteWithout<PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "where">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:96
Adds a where clause to the query.
Calling this method will delete only those rows that fulfill a specified condition.
See docs: https://orm.drizzle.team/docs/delete
Parameters
| Parameter | Type | Description |
|---|---|---|
where | SQL<unknown> | undefined | the where clause. |
Returns
PgDeleteWithout<PgUnthrownDeleteBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "where">
Example
You can use conditional operators and sql function to filter the rows to be deleted.
// Delete all cars with green color
await db.delete(cars).where(eq(cars.color, 'green'));
// or
await db.delete(cars).where(sql`${cars.color} = 'green'`)You can logically combine conditional operators with and() and or() operators:
// Delete all BMW cars with a green color
await db.delete(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));
// Delete all cars with the green or blue color
await db.delete(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));Inherited from
PgDeleteBase.wherePgUnthrownInsertBase
Defined in: packages/drizzle/src/pg-core/insert.ts:57
An insert query that resolves to an AsyncResult.
Remarks
This is where the package earns its keep: a unique index, a foreign key or a NOT NULL column turns a write into a modeled PgQueryError instead of a rejection, so the caller branches on it exhaustively.
Extends
PgInsertBase<PgUnthrownInsertHKT,TTable,TQueryResult,TSelectedFields,TReturning,TDynamic,TExcludedMethods>
Type Parameters
| Type Parameter | Default type |
|---|---|
TTable extends PgTable | - |
TQueryResult extends PgQueryResultHKT | - |
TSelectedFields | undefined |
TReturning | undefined |
TDynamic extends boolean | false |
TExcludedMethods extends string | never |
Constructors
Constructor
new PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>(
table,
values,
session,
dialect,
withList?,
select?,
overridingSystemValue_?): PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:114
Parameters
| Parameter | Type |
|---|---|
table | TTable |
values | | SQL<unknown> | Record<string, SQL<unknown> | Param<any, any>>[] | TypedQueryBuilder<{ }, unknown, unknown> |
session | PgSession |
dialect | PgDialect |
withList? | Subquery<string, Record<string, unknown>>[] |
select? | boolean |
overridingSystemValue_? | boolean |
Returns
PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>
Inherited from
PgInsertBase<
PgUnthrownInsertHKT,
TTable,
TQueryResult,
TSelectedFields,
TReturning,
TDynamic,
TExcludedMethods
>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgInsertBase._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:97 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:98 |
_.dynamic | readonly | TDynamic | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:104 |
_.excludedMethods | readonly | TExcludedMethods | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:105 |
_.hkt | readonly | PgUnthrownInsertHKT | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:99 |
_.queryResult | readonly | TQueryResult | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:101 |
_.result | readonly | TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[] | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:106 |
_.returning | readonly | TReturning | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:103 |
_.selectedFields | readonly | TSelectedFields | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:102 |
_.table | readonly | TTable | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:100 |
then | readonly | ResultThen<InsertResult<TQueryResult, TReturning>> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/insert.ts:120 |
[entityKind] | readonly | string | "PgUnthrownInsert" | - | PgInsertBase.[entityKind] | - | packages/drizzle/src/pg-core/insert.ts:73 |
Methods
$dynamic()
$dynamic(): PgUnthrownInsertBase<Assume<TTable, PgTable<TableConfig>>>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:199
Returns
PgUnthrownInsertBase<Assume<TTable, PgTable<TableConfig>>>
Inherited from
PgInsertBase.$dynamiccomment()
comment(comment): PgInsertWithout<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "comment">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:196
Attach sqlcommenter comment to a query
Parameters
| Parameter | Type |
|---|---|
comment | CommentInput |
Returns
PgInsertWithout<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "comment">
Inherited from
PgInsertBase.commentexecute()
execute(placeholderValues?): AsyncResult<InsertResult<TQueryResult, TReturning>, PgQueryError>;Defined in: packages/drizzle/src/pg-core/insert.ts:112
Run the insert, resolving to its result or a PgQueryError.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<InsertResult<TQueryResult, TReturning>, PgQueryError>
getSQL()
getSQL(): SQL;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:197
Returns
SQL
Inherited from
PgInsertBase.getSQLonConflictDoNothing()
onConflictDoNothing(config?): PgInsertWithout<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "onConflictDoNothing" | "onConflictDoUpdate">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:159
Adds an on conflict do nothing clause to the query.
Calling this method simply avoids inserting a row as its alternative action.
See docs: https://orm.drizzle.team/docs/insert#on-conflict-do-nothing
Parameters
| Parameter | Type | Description |
|---|---|---|
config? | { target?: IndexColumn | IndexColumn[]; where?: SQL<unknown>; } | The target and where clauses. |
config.target? | IndexColumn | IndexColumn[] | - |
config.where? | SQL<unknown> | - |
Returns
PgInsertWithout<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "onConflictDoNothing" | "onConflictDoUpdate">
Example
// Insert one row and cancel the insert if there's a conflict
await db.insert(cars)
.values({ id: 1, brand: 'BMW' })
.onConflictDoNothing();
// Explicitly specify conflict target
await db.insert(cars)
.values({ id: 1, brand: 'BMW' })
.onConflictDoNothing({ target: cars.id });Inherited from
PgInsertBase.onConflictDoNothingonConflictDoUpdate()
onConflictDoUpdate(config): PgInsertWithout<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "onConflictDoNothing" | "onConflictDoUpdate">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:192
Adds an on conflict do update clause to the query.
Calling this method will update the existing row that conflicts with the row proposed for insertion as its alternative action.
See docs: https://orm.drizzle.team/docs/insert#upserts-and-conflicts
Parameters
| Parameter | Type | Description |
|---|---|---|
config | PgInsertOnConflictDoUpdateConfig<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>> | The target, set and where clauses. |
Returns
PgInsertWithout<PgUnthrownInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, TDynamic, TExcludedMethods>, TDynamic, "onConflictDoNothing" | "onConflictDoUpdate">
Example
// Update the row if there's a conflict
await db.insert(cars)
.values({ id: 1, brand: 'BMW' })
.onConflictDoUpdate({
target: cars.id,
set: { brand: 'Porsche' }
});
// Upsert with 'where' clause
await db.insert(cars)
.values({ id: 1, brand: 'BMW' })
.onConflictDoUpdate({
target: cars.id,
set: { brand: 'newBMW' },
targetWhere: sql`${cars.createdAt} > '2023-01-01'::date`,
});Inherited from
PgInsertBase.onConflictDoUpdateprepare()
prepare(name): PgUnthrownPreparedQuery<PreparedQueryConfig & object>;Defined in: packages/drizzle/src/pg-core/insert.ts:103
Create a prepared statement for this query. This allows the database to remember this query for the given session and call it by name, rather than specifying the full query.
Postgres prepare documentation
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
PgUnthrownPreparedQuery<PreparedQueryConfig & object>
returning()
Call Signature
returning(): PgInsertWithout<PgInsertKind<PgUnthrownInsertHKT, TTable, TQueryResult, TTable["_"]["columns"], TTable["$inferSelect"], TDynamic, TExcludedMethods>, TDynamic>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:135
Adds a returning clause to the query.
Calling this method will return the specified fields of the inserted rows. If no fields are specified, all fields will be returned.
See docs: https://orm.drizzle.team/docs/insert#insert-returning
Returns
PgInsertWithout<PgInsertKind<PgUnthrownInsertHKT, TTable, TQueryResult, TTable["_"]["columns"], TTable["$inferSelect"], TDynamic, TExcludedMethods>, TDynamic>
Example
// Insert one row and return all fields
const insertedCar: Car[] = await db.insert(cars)
.values({ brand: 'BMW' })
.returning();
// Insert one row and return only the id
const insertedCarId: { id: number }[] = await db.insert(cars)
.values({ brand: 'BMW' })
.returning({ id: cars.id });Inherited from
PgInsertBase.returningCall Signature
returning<TSelectedFields>(fields): PgInsertWithout<PgInsertKind<PgUnthrownInsertHKT, TTable, TQueryResult, TSelectedFields, { [K in string | number | symbol]: { [Key in string | number | symbol]: SelectResultField<TSelectedFields[Key], true> }[K] }, TDynamic, TExcludedMethods>, TDynamic, "returning">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:136
Adds a returning clause to the query.
Calling this method will return the specified fields of the inserted rows. If no fields are specified, all fields will be returned.
See docs: https://orm.drizzle.team/docs/insert#insert-returning
Type Parameters
| Type Parameter |
|---|
TSelectedFields extends SelectedFieldsFlat |
Parameters
| Parameter | Type |
|---|---|
fields | TSelectedFields |
Returns
PgInsertWithout<PgInsertKind<PgUnthrownInsertHKT, TTable, TQueryResult, TSelectedFields, { [K in string | number | symbol]: { [Key in string | number | symbol]: SelectResultField<TSelectedFields[Key], true> }[K] }, TDynamic, TExcludedMethods>, TDynamic, "returning">
Example
// Insert one row and return all fields
const insertedCar: Car[] = await db.insert(cars)
.values({ brand: 'BMW' })
.returning();
// Insert one row and return only the id
const insertedCarId: { id: number }[] = await db.insert(cars)
.values({ brand: 'BMW' })
.returning({ id: cars.id });Inherited from
PgInsertBase.returningshouldOmitSQLParens()?
optional shouldOmitSQLParens(): boolean;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:49
Returns
boolean
Inherited from
PgInsertBase.shouldOmitSQLParenstoSQL()
toSQL(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:198
Returns
Query
Inherited from
PgInsertBase.toSQLPgUnthrownRaw
Defined in: packages/drizzle/src/pg-core/raw.ts:22
A raw db.execute(sql\…`)query that resolves to anAsyncResult`.
Remarks
Unlike every other builder, this one is handed an already-prepared query — the database prepared it when building the fragment — so _prepare simply returns it and execute runs it.
Extends
PgRaw<TResult>
Type Parameters
| Type Parameter | Description |
|---|---|
TResult | the driver's result for the statement. |
Constructors
Constructor
new PgUnthrownRaw<TResult>(
prepared,
sql,
query): PgUnthrownRaw<TResult>;Defined in: packages/drizzle/src/pg-core/raw.ts:31
Parameters
| Parameter | Type |
|---|---|
prepared | PgUnthrownPreparedQuery<{ execute: TResult; }> |
sql | SQL |
query | Query |
Returns
PgUnthrownRaw<TResult>
Overrides
PgRaw<TResult>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgRaw._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/raw.d.ts:13 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/raw.d.ts:14 |
_.result | readonly | TResult | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/raw.d.ts:15 |
then | readonly | ResultThen<TResult> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/raw.ts:46 |
[entityKind] | readonly | string | "PgUnthrownRaw" | - | PgRaw.[entityKind] | - | packages/drizzle/src/pg-core/raw.ts:23 |
Methods
_prepare()
_prepare(): PgUnthrownPreparedQuery<{
execute: TResult;
}>;Defined in: packages/drizzle/src/pg-core/raw.ts:40
Returns
PgUnthrownPreparedQuery<{ execute: TResult; }>
Overrides
PgRaw._prepareexecute()
execute(placeholderValues?): AsyncResult<TResult, PgQueryError>;Defined in: packages/drizzle/src/pg-core/raw.ts:36
Run the statement, resolving to the driver's result.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<TResult, PgQueryError>
getQuery()
getQuery(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/raw.d.ts:19
Returns
Query
Inherited from
PgRaw.getQuerygetSQL()
getSQL(): SQL<unknown>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/raw.d.ts:18
Returns
SQL<unknown>
Inherited from
PgRaw.getSQLshouldOmitSQLParens()?
optional shouldOmitSQLParens(): boolean;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:49
Returns
boolean
Inherited from
PgRaw.shouldOmitSQLParensPgUnthrownRefreshMaterializedView
Defined in: packages/drizzle/src/pg-core/refresh-materialized-view.ts:18
A refresh materialized view statement that resolves to an AsyncResult.
Extends
PgRefreshMaterializedView<TQueryResult>
Type Parameters
| Type Parameter |
|---|
TQueryResult extends PgQueryResultHKT |
Constructors
Constructor
new PgUnthrownRefreshMaterializedView<TQueryResult>(
view,
session,
dialect): PgUnthrownRefreshMaterializedView<TQueryResult>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:21
Parameters
| Parameter | Type |
|---|---|
view | PgMaterializedView |
session | PgSession |
dialect | PgDialect |
Returns
PgUnthrownRefreshMaterializedView<TQueryResult>
Inherited from
PgRefreshMaterializedView<TQueryResult>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgRefreshMaterializedView._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:12 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:13 |
_.result | readonly | PgQueryResultKind<TQueryResult, never> | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:14 |
then | readonly | ResultThen<PgQueryResultKind<TQueryResult, never>, never> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/refresh-materialized-view.ts:88 |
[entityKind] | readonly | string | "PgUnthrownRefreshMaterializedView" | - | PgRefreshMaterializedView.[entityKind] | - | packages/drizzle/src/pg-core/refresh-materialized-view.ts:21 |
Methods
concurrently()
concurrently(): this;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:22
Returns
this
Inherited from
PgRefreshMaterializedView.concurrentlyexecute()
execute(placeholderValues?): AsyncResult<PgQueryResultKind<TQueryResult, never>, never>;Defined in: packages/drizzle/src/pg-core/refresh-materialized-view.ts:80
Run the refresh, resolving to the driver's result.
The error channel is never, and here that is a judgement, not an impossibility. A refresh can raise 23505 — it repopulates a heap, and REFRESH … CONCURRENTLY (the inherited .concurrently()) requires a unique index, so a view whose own query yields duplicates violates it.
It is still a defect, by this package's "would you branch on it?" rule: a materialized view whose query produces duplicates is a bug in the view definition, which you log and 500 on — exactly what match's defect arm already does. Nobody writes a recovery path for it, and modelling it would put an arm at every refresh call site duplicating that same defect arm. Runtime and type agree either way; see runSafeQuery.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<PgQueryResultKind<TQueryResult, never>, never>
prepare()
prepare(name): PgUnthrownSafePreparedQuery<PreparedQueryConfig & object>;Defined in: packages/drizzle/src/pg-core/refresh-materialized-view.ts:57
Create a prepared statement for this query. This allows the database to remember this query for the given session and call it by name, rather than specifying the full query.
Its execute() carries the same never error channel as this builder's — see PgUnthrownSafePreparedQuery.
Postgres prepare documentation
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
PgUnthrownSafePreparedQuery<PreparedQueryConfig & object>
toSQL()
toSQL(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:24
Returns
Query
Inherited from
PgRefreshMaterializedView.toSQLwithNoData()
withNoData(): this;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/refresh-materialized-view.d.ts:23
Returns
this
Inherited from
PgRefreshMaterializedView.withNoDataPgUnthrownRelationalQuery
Defined in: packages/drizzle/src/pg-core/query.ts:34
A relational (db.query.…) query that resolves to an AsyncResult.
Extends
PgRelationalQuery<PgUnthrownRelationalQueryHKT,TResult>
Type Parameters
| Type Parameter | Description |
|---|---|
TResult | the shape the relational query builds; an array for findMany, a single row or undefined for findFirst. |
Constructors
Constructor
new PgUnthrownRelationalQuery<TResult>(
schema,
table,
tableConfig,
dialect,
session,
config,
mode,
parseJson): PgUnthrownRelationalQuery<TResult>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:52
Parameters
| Parameter | Type |
|---|---|
schema | TablesRelationalConfig |
table | PgTable |
tableConfig | TableRelationalConfig |
dialect | PgDialect |
session | PgSession |
config | true | DBQueryConfigWithComment<"many" | "one"> |
mode | "many" | "first" |
parseJson | boolean |
Returns
PgUnthrownRelationalQuery<TResult>
Inherited from
PgRelationalQuery<
PgUnthrownRelationalQueryHKT,
TResult
>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgRelationalQuery._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:47 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:48 |
_.hkt | readonly | PgUnthrownRelationalQueryHKT | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:49 |
_.result | readonly | TResult | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:50 |
then | readonly | ResultThen<TResult, never> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/query.ts:95 |
[entityKind] | readonly | string | "PgUnthrownRelationalQuery" | - | PgRelationalQuery.[entityKind] | - | packages/drizzle/src/pg-core/query.ts:38 |
Methods
execute()
execute(placeholderValues?): AsyncResult<TResult, never>;Defined in: packages/drizzle/src/pg-core/query.ts:89
Run the relational query, resolving to its rows.
The error channel is never — db.query.* is a read, so every failure it can hit is a defect. See runSafeQuery.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<TResult, never>
getSQL()
getSQL(): SQL;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:54
Returns
SQL
Inherited from
PgRelationalQuery.getSQLprepare()
prepare(name): PgUnthrownSafePreparedQuery<PreparedQueryConfig & object>;Defined in: packages/drizzle/src/pg-core/query.ts:79
Create a prepared statement for this query. This allows the database to remember this query for the given session and call it by name, rather than specifying the full query.
Its execute() carries the same never error channel as this builder's — see PgUnthrownSafePreparedQuery.
Postgres prepare documentation
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
PgUnthrownSafePreparedQuery<PreparedQueryConfig & object>
toSQL()
toSQL(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:59
Returns
Query
Inherited from
PgRelationalQuery.toSQLPgUnthrownSelectBase
Defined in: packages/drizzle/src/pg-core/select.ts:71
A select query that resolves to an AsyncResult.
Remarks
Every chaining method comes from drizzle's PgSelectBase; this subclass adds only the execution half — _prepare, prepare, execute — plus the then that makes await db.select().from(users) yield a Result.
The error channel is never: a read has no modeled failure. A SELECT writes nothing, so it cannot violate an integrity constraint; a database that will not answer is an infrastructure failure, which is a defect. That is enforced at runtime as well as declared — see runSafeQuery.
Extends
PgSelectBase<PgUnthrownSelectHKT,TTableName,TSelection,TSelectMode,TNullabilityMap,TDynamic,TExcludedMethods,TResult,TSelectedFields>
Type Parameters
| Type Parameter | Default type |
|---|---|
TTableName extends string | undefined | - |
TSelection extends ColumnsSelection | undefined | - |
TSelectMode extends SelectMode | - |
TNullabilityMap extends Record<string, JoinNullability> | TTableName extends string ? Record<TTableName, "not-null"> : Record<string, never> |
TDynamic extends boolean | false |
TExcludedMethods extends string | never |
TResult extends unknown[] | SelectResult<TSelection, TSelectMode, TNullabilityMap>[] |
TSelectedFields extends ColumnsSelection | BuildSubquerySelection<Assume<TSelection, ColumnsSelection>, TNullabilityMap> |
Constructors
Constructor
new PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>(config): PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:88
Parameters
| Parameter | Type |
|---|---|
config | { dialect: PgDialect; distinct: | boolean | { on: ( | SQLWrapper<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }>)[]; } | undefined; fields: Record<string, unknown>; isPartialSelect: boolean; session: PgSession | undefined; table: | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | Subquery<string, Record<string, unknown>>; tagged?: boolean; withList: Subquery<string, Record<string, unknown>>[]; } |
config.dialect | PgDialect |
config.distinct | | boolean | { on: ( | SQLWrapper<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }>)[]; } | undefined |
config.fields | Record<string, unknown> |
config.isPartialSelect | boolean |
config.session | PgSession | undefined |
config.table | | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | Subquery<string, Record<string, unknown>> |
config.tagged? | boolean |
config.withList | Subquery<string, Record<string, unknown>>[] |
Returns
PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>
Inherited from
PgSelectBase<
PgUnthrownSelectHKT,
TTableName,
TSelection,
TSelectMode,
TNullabilityMap,
TDynamic,
TExcludedMethods,
TResult,
TSelectedFields
>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgSelectBase._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:67 |
_.config | readonly | PgSelectConfig | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:78 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:68 |
_.dynamic | readonly | TDynamic | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:74 |
_.excludedMethods | readonly | TExcludedMethods | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:75 |
_.hkt | readonly | PgUnthrownSelectHKT | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:69 |
_.nullabilityMap | readonly | TNullabilityMap | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:73 |
_.result | readonly | TResult | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:76 |
_.selectedFields | readonly | TSelectedFields | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:77 |
_.selection | readonly | TSelection | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:71 |
_.selectMode | readonly | TSelectMode | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:72 |
_.tableName | readonly | TTableName | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:70 |
crossJoin | public | PgSelectCrossJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, false> | undefined | Executes a cross join operation by combining rows from two tables into a new table. Calling this method retrieves all rows from both main and joined tables, merging all rows from each table. See docs: https://orm.drizzle.team/docs/joins#cross-join Param table the table to join. Example // Select all users, each user with every pet const usersWithPets: { user: User; pets: Pet; }[] = await db.select() .from(users) .crossJoin(pets) // Select userId and petId const usersIdsAndPetIds: { userId: number; petId: number; }[] = await db.select({ userId: users.id, petId: pets.id, }) .from(users) .crossJoin(pets) | - | PgSelectBase.crossJoin | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:265 |
crossJoinLateral | public | PgSelectCrossJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, true> | undefined | Executes a cross join lateral operation by combining rows from two queries into a new table. A lateral join allows the right-hand expression to refer to columns from the left-hand side. Calling this method retrieves all rows from both main and joined queries, merging all rows from each query. See docs: https://orm.drizzle.team/docs/joins#cross-join-lateral Param table the query to join. | - | PgSelectBase.crossJoinLateral | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:277 |
except | public | <TValue>(rightSelection) => PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, PgSetOperatorExcludedMethods, true> | undefined | Adds except set operator to the query. Calling this method will retrieve all unique rows from the left query, except for the rows that are present in the result set of the right query. See docs: https://orm.drizzle.team/docs/set-operations#except Example // Select all courses offered in department A but not in department B await db.select({ courseName: depA.courseName }) .from(depA) .except( db.select({ courseName: depB.courseName }).from(depB) ); // or import { except } from 'drizzle-orm/pg-core' await except( db.select({ courseName: depA.courseName }).from(depA), db.select({ courseName: depB.courseName }).from(depB) ); | - | PgSelectBase.except | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:423 |
exceptAll | public | <TValue>(rightSelection) => PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, PgSetOperatorExcludedMethods, true> | undefined | Adds except all set operator to the query. Calling this method will retrieve all rows from the left query, except for the rows that are present in the result set of the right query. See docs: https://orm.drizzle.team/docs/set-operations#except-all Example // Select all products that are ordered by regular customers but not by VIP customers await db.select({ productId: regularCustomerOrders.productId, quantityOrdered: regularCustomerOrders.quantityOrdered, }) .from(regularCustomerOrders) .exceptAll( db.select({ productId: vipCustomerOrders.productId, quantityOrdered: vipCustomerOrders.quantityOrdered, }) .from(vipCustomerOrders) ); // or import { exceptAll } from 'drizzle-orm/pg-core' await exceptAll( db.select({ productId: regularCustomerOrders.productId, quantityOrdered: regularCustomerOrders.quantityOrdered }) .from(regularCustomerOrders), db.select({ productId: vipCustomerOrders.productId, quantityOrdered: vipCustomerOrders.quantityOrdered }) .from(vipCustomerOrders) ); | - | PgSelectBase.exceptAll | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:464 |
fullJoin | public | PgSelectJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "full", false> | undefined | Executes a full join operation by combining rows from two tables into a new table. Calling this method retrieves all rows from both main and joined tables, merging rows with matching values and filling in null for non-matching columns. See docs: https://orm.drizzle.team/docs/joins#full-join Param table the table to join. Param on the on clause. Example `// Select all users and their pets const usersWithPets: { user: User | null; pets: Pet | null; }[] = await db.select() .from(users) .fullJoin(pets, eq(users.id, pets.ownerId)) // Select userId and petId const usersIdsAndPetIds: { userId: number | null; petId: number |
innerJoin | public | PgSelectJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "inner", false> | undefined | Executes an inner join operation, creating a new table by combining rows from two tables that have matching values. Calling this method retrieves rows that have corresponding entries in both joined tables. Rows without matching entries in either table are excluded, resulting in a table that includes only matching pairs. See docs: https://orm.drizzle.team/docs/joins#inner-join Param table the table to join. Param on the on clause. Example // Select all users and their pets const usersWithPets: { user: User; pets: Pet; }[] = await db.select() .from(users) .innerJoin(pets, eq(users.id, pets.ownerId)) // Select userId and petId const usersIdsAndPetIds: { userId: number; petId: number; }[] = await db.select({ userId: users.id, petId: pets.id, }) .from(users) .innerJoin(pets, eq(users.id, pets.ownerId)) | - | PgSelectBase.innerJoin | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:197 |
innerJoinLateral | public | PgSelectJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "inner", true> | undefined | Executes an inner join lateral operation, creating a new table by combining rows from two queries that have matching values. A lateral join allows the right-hand expression to refer to columns from the left-hand side. Calling this method retrieves rows that have corresponding entries in both joined tables. Rows without matching entries in either table are excluded, resulting in a table that includes only matching pairs. See docs: https://orm.drizzle.team/docs/joins#inner-join-lateral Param table the subquery to join. Param on the on clause. | - | PgSelectBase.innerJoinLateral | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:210 |
intersect | public | <TValue>(rightSelection) => PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, PgSetOperatorExcludedMethods, true> | undefined | Adds intersect set operator to the query. Calling this method will retain only the rows that are present in both result sets and eliminate duplicates. See docs: https://orm.drizzle.team/docs/set-operations#intersect Example // Select course names that are offered in both departments A and B await db.select({ courseName: depA.courseName }) .from(depA) .intersect( db.select({ courseName: depB.courseName }).from(depB) ); // or import { intersect } from 'drizzle-orm/pg-core' await intersect( db.select({ courseName: depA.courseName }).from(depA), db.select({ courseName: depB.courseName }).from(depB) ); | - | PgSelectBase.intersect | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:356 |
intersectAll | public | <TValue>(rightSelection) => PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, PgSetOperatorExcludedMethods, true> | undefined | Adds intersect all set operator to the query. Calling this method will retain only the rows that are present in both result sets including all duplicates. See docs: https://orm.drizzle.team/docs/set-operations#intersect-all Example // Select all products and quantities that are ordered by both regular and VIP customers await db.select({ productId: regularCustomerOrders.productId, quantityOrdered: regularCustomerOrders.quantityOrdered }) .from(regularCustomerOrders) .intersectAll( db.select({ productId: vipCustomerOrders.productId, quantityOrdered: vipCustomerOrders.quantityOrdered }) .from(vipCustomerOrders) ); // or import { intersectAll } from 'drizzle-orm/pg-core' await intersectAll( db.select({ productId: regularCustomerOrders.productId, quantityOrdered: regularCustomerOrders.quantityOrdered }) .from(regularCustomerOrders), db.select({ productId: vipCustomerOrders.productId, quantityOrdered: vipCustomerOrders.quantityOrdered }) .from(vipCustomerOrders) ); | - | PgSelectBase.intersectAll | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:397 |
leftJoin | public | PgSelectJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "left", false> | undefined | Executes a left join operation by adding another table to the current query. Calling this method associates each row of the table with the corresponding row from the joined table, if a match is found. If no matching row exists, it sets all columns of the joined table to null. See docs: https://orm.drizzle.team/docs/joins#left-join Param table the table to join. Param on the on clause. Example `// Select all users and their pets const usersWithPets: { user: User; pets: Pet | null; }[] = await db.select() .from(users) .leftJoin(pets, eq(users.id, pets.ownerId)) // Select userId and petId const usersIdsAndPetIds: { userId: number; petId: number | null; }[] = await db.select({ userId: users.id, petId: pets.id, }) .from(users) .leftJoin(pets, eq(users.id, pets.ownerId))` | - |
leftJoinLateral | public | PgSelectJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "left", true> | undefined | Executes a left join lateral operation by adding subquery to the current query. A lateral join allows the right-hand expression to refer to columns from the left-hand side. Calling this method associates each row of the table with the corresponding row from the joined table, if a match is found. If no matching row exists, it sets all columns of the joined table to null. See docs: https://orm.drizzle.team/docs/joins#left-join-lateral Param table the subquery to join. Param on the on clause. | - | PgSelectBase.leftJoinLateral | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:141 |
rightJoin | public | PgSelectJoinFn<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "right", false> | undefined | Executes a right join operation by adding another table to the current query. Calling this method associates each row of the joined table with the corresponding row from the main table, if a match is found. If no matching row exists, it sets all columns of the main table to null. See docs: https://orm.drizzle.team/docs/joins#right-join Param table the table to join. Param on the on clause. Example `// Select all users and their pets const usersWithPets: { user: User | null; pets: Pet; }[] = await db.select() .from(users) .rightJoin(pets, eq(users.id, pets.ownerId)) // Select userId and petId const usersIdsAndPetIds: { userId: number | null; petId: number; }[] = await db.select({ userId: users.id, petId: pets.id, }) .from(users) .rightJoin(pets, eq(users.id, pets.ownerId))` | - |
then | readonly | ResultThen<TResult, never> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/select.ts:161 |
union | public | <TValue>(rightSelection) => PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, PgSetOperatorExcludedMethods, true> | undefined | Adds union set operator to the query. Calling this method will combine the result sets of the select statements and remove any duplicate rows that appear across them. See docs: https://orm.drizzle.team/docs/set-operations#union Example // Select all unique names from customers and users tables await db.select({ name: users.name }) .from(users) .union( db.select({ name: customers.name }).from(customers) ); // or import { union } from 'drizzle-orm/pg-core' await union( db.select({ name: users.name }).from(users), db.select({ name: customers.name }).from(customers) ); | - | PgSelectBase.union | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:304 |
unionAll | public | <TValue>(rightSelection) => PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, PgSetOperatorExcludedMethods, true> | undefined | Adds union all set operator to the query. Calling this method will combine the result-set of the select statements and keep all duplicate rows that appear across them. See docs: https://orm.drizzle.team/docs/set-operations#union-all Example // Select all transaction ids from both online and in-store sales await db.select({ transaction: onlineSales.transactionId }) .from(onlineSales) .unionAll( db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales) ); // or import { unionAll } from 'drizzle-orm/pg-core' await unionAll( db.select({ transaction: onlineSales.transactionId }).from(onlineSales), db.select({ transaction: inStoreSales.transactionId }).from(inStoreSales) ); | - | PgSelectBase.unionAll | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:330 |
[entityKind] | readonly | string | "PgUnthrownSelect" | - | PgSelectBase.[entityKind] | - | packages/drizzle/src/pg-core/select.ts:96 |
Methods
$dynamic()
$dynamic(): PgSelectDynamic<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:617
Returns
PgSelectDynamic<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>>
Inherited from
PgSelectBase.$dynamic$withCache()
$withCache(config?): this;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:618
Parameters
| Parameter | Type |
|---|---|
config? | | false | { autoInvalidate?: boolean; config?: CacheConfig; tag?: string; } |
Returns
this
Inherited from
PgSelectBase.$withCacheas()
as<TAlias>(alias): SubqueryWithSelection<TSelectedFields, TAlias>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:616
Type Parameters
| Type Parameter |
|---|
TAlias extends string |
Parameters
| Parameter | Type |
|---|---|
alias | TAlias |
Returns
SubqueryWithSelection<TSelectedFields, TAlias>
Inherited from
PgSelectBase.ascomment()
comment(comment): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "comment">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:613
Attach sqlcommenter comment to a query
Parameters
| Parameter | Type |
|---|---|
comment | CommentInput |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "comment">
Inherited from
PgSelectBase.commentexecute()
execute(placeholderValues?): AsyncResult<TResult, never>;Defined in: packages/drizzle/src/pg-core/select.ts:155
Run the query, resolving to the selected rows.
The error channel is never — every failure a read can hit is a defect, and runSafeQuery is what makes that true at runtime, not just in the type.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<TResult, never>
for()
for(strength, config?): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "for">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:609
Adds a for clause to the query.
Calling this method will specify a lock strength for this query that controls how strictly it acquires exclusive access to the rows being queried.
See docs: https://www.postgresql.org/docs/current/sql-select.html#SQL-FOR-UPDATE-SHARE
Parameters
| Parameter | Type | Description |
|---|---|---|
strength | LockStrength | the lock strength. |
config? | LockConfig | the lock configuration. |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "for">
Inherited from
PgSelectBase.forgetSQL()
getSQL(): SQL;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:614
Returns
SQL
Inherited from
PgSelectBase.getSQLgroupBy()
Call Signature
groupBy(builder): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "groupBy">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:537
Adds a group by clause to the query.
Calling this method will group rows that have the same values into summary rows, often used for aggregation purposes.
See docs: https://orm.drizzle.team/docs/select#aggregations
Parameters
| Parameter | Type |
|---|---|
builder | (aliases) => ValueOrArray< | SQL<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }> | Aliased<unknown>> |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "groupBy">
Example
// Group and count people by their last names
await db.select({
lastName: people.lastName,
count: sql<number>`cast(count(*) as int)`
})
.from(people)
.groupBy(people.lastName);Inherited from
PgSelectBase.groupByCall Signature
groupBy(...columns): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "groupBy">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:538
Adds a group by clause to the query.
Calling this method will group rows that have the same values into summary rows, often used for aggregation purposes.
See docs: https://orm.drizzle.team/docs/select#aggregations
Parameters
| Parameter | Type |
|---|---|
...columns | ( | SQL<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }> | Aliased<unknown>)[] |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "groupBy">
Example
// Group and count people by their last names
await db.select({
lastName: people.lastName,
count: sql<number>`cast(count(*) as int)`
})
.from(people)
.groupBy(people.lastName);Inherited from
PgSelectBase.groupByhaving()
having(having): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "having">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:517
Adds a having clause to the query.
Calling this method will select only those rows that fulfill a specified condition. It is typically used with aggregate functions to filter the aggregated data based on a specified condition.
See docs: https://orm.drizzle.team/docs/select#aggregations
Parameters
| Parameter | Type | Description |
|---|---|---|
having | | SQL<unknown> | ((aliases) => SQL<unknown> | undefined) | undefined | the having clause. |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "having">
Example
// Select all brands with more than one car
await db.select({
brand: cars.brand,
count: sql<number>`cast(count(${cars.id}) as int)`,
})
.from(cars)
.groupBy(cars.brand)
.having(({ count }) => gt(count, 1));Inherited from
PgSelectBase.havinglimit()
limit(limit): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "limit">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:581
Adds a limit clause to the query.
Calling this method will set the maximum number of rows that will be returned by this query.
See docs: https://orm.drizzle.team/docs/select#limit--offset
Parameters
| Parameter | Type | Description |
|---|---|---|
limit | number | Placeholder<string, any> | the limit clause. |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "limit">
Example
// Get the first 10 people from this query.
await db.select().from(people).limit(10);Inherited from
PgSelectBase.limitoffset()
offset(offset): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "offset">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:598
Adds an offset clause to the query.
Calling this method will skip a number of rows when returning results from this query.
See docs: https://orm.drizzle.team/docs/select#limit--offset
Parameters
| Parameter | Type | Description |
|---|---|---|
offset | number | Placeholder<string, any> | the offset clause. |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "offset">
Example
// Get the 10th-20th people from this query.
await db.select().from(people).offset(10).limit(10);Inherited from
PgSelectBase.offsetorderBy()
Call Signature
orderBy(builder): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "orderBy">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:563
Adds an order by clause to the query.
Calling this method will sort the result-set in ascending or descending order. By default, the sort order is ascending.
See docs: https://orm.drizzle.team/docs/select#order-by
Parameters
| Parameter | Type |
|---|---|
builder | (aliases) => ValueOrArray< | SQL<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }> | Aliased<unknown>> |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "orderBy">
Example
// Select cars ordered by year
await db.select().from(cars).orderBy(cars.year);You can specify whether results are in ascending or descending order with the asc() and desc() operators.
// Select cars ordered by year in descending order
await db.select().from(cars).orderBy(desc(cars.year));
// Select cars ordered by year and price
await db.select().from(cars).orderBy(asc(cars.year), desc(cars.price));Inherited from
PgSelectBase.orderByCall Signature
orderBy(...columns): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "orderBy">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:564
Adds an order by clause to the query.
Calling this method will sort the result-set in ascending or descending order. By default, the sort order is ascending.
See docs: https://orm.drizzle.team/docs/select#order-by
Parameters
| Parameter | Type |
|---|---|
...columns | ( | SQL<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }> | Aliased<unknown>)[] |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "orderBy">
Example
// Select cars ordered by year
await db.select().from(cars).orderBy(cars.year);You can specify whether results are in ascending or descending order with the asc() and desc() operators.
// Select cars ordered by year in descending order
await db.select().from(cars).orderBy(desc(cars.year));
// Select cars ordered by year and price
await db.select().from(cars).orderBy(asc(cars.year), desc(cars.price));Inherited from
PgSelectBase.orderByprepare()
prepare(name): PgUnthrownSafePreparedQuery<PreparedQueryConfig & object>;Defined in: packages/drizzle/src/pg-core/select.ts:145
Create a prepared statement for this query. This allows the database to remember this query for the given session and call it by name, rather than specifying the full query.
Its execute() carries the same never error channel as this builder's — see PgUnthrownSafePreparedQuery.
Postgres prepare documentation
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
PgUnthrownSafePreparedQuery<PreparedQueryConfig & object>
toSQL()
toSQL(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:615
Returns
Query
Inherited from
PgSelectBase.toSQLwhere()
where(where): PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "where">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.d.ts:494
Adds a where clause to the query.
Calling this method will select only those rows that fulfill a specified condition.
See docs: https://orm.drizzle.team/docs/select#filtering
Parameters
| Parameter | Type | Description |
|---|---|---|
where | | SQL<unknown> | ((aliases) => SQL<unknown> | undefined) | undefined | the where clause. |
Returns
PgSelectWithout<PgUnthrownSelectBase<TTableName, TSelection, TSelectMode, TNullabilityMap, TDynamic, TExcludedMethods, TResult, TSelectedFields>, TDynamic, "where">
Example
You can use conditional operators and sql function to filter the rows to be selected.
// Select all cars with green color
await db.select().from(cars).where(eq(cars.color, 'green'));
// or
await db.select().from(cars).where(sql`${cars.color} = 'green'`)You can logically combine conditional operators with and() and or() operators:
// Select all BMW cars with a green color
await db.select().from(cars).where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));
// Select all cars with the green or blue color
await db.select().from(cars).where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));Inherited from
PgSelectBase.wherePgUnthrownUpdateBase
Defined in: packages/drizzle/src/pg-core/update.ts:60
An update query that resolves to an AsyncResult.
Extends
PgUpdateBase<PgUnthrownUpdateHKT,TTable,TQueryResult,TFrom,TSelectedFields,TReturning,TNullabilityMap,TJoins,TDynamic,TExcludedMethods>
Type Parameters
| Type Parameter | Default type |
|---|---|
TTable extends PgTable | - |
TQueryResult extends PgQueryResultHKT | - |
TFrom extends PgTable | Subquery | PgViewBase | SQL | undefined | undefined |
TSelectedFields extends ColumnsSelection | undefined | undefined |
TReturning extends Record<string, unknown> | undefined | undefined |
TNullabilityMap extends Record<string, JoinNullability> | Record<TTable["_"]["name"], "not-null"> |
TJoins extends Join[] | [] |
TDynamic extends boolean | false |
TExcludedMethods extends string | never |
Constructors
Constructor
new PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>(
table,
set,
session,
dialect,
withList?): PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:119
Parameters
| Parameter | Type |
|---|---|
table | TTable |
set | UpdateSet |
session | PgSession |
dialect | PgDialect |
withList? | Subquery<string, Record<string, unknown>>[] |
Returns
PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>
Inherited from
PgUpdateBase<
PgUnthrownUpdateHKT,
TTable,
TQueryResult,
TFrom,
TSelectedFields,
TReturning,
TNullabilityMap,
TJoins,
TDynamic,
TExcludedMethods
>.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
_ | readonly | object | undefined | - | - | PgUpdateBase._ | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:97 |
_.dialect | readonly | "pg" | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:98 |
_.dynamic | readonly | TDynamic | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:107 |
_.excludedMethods | readonly | TExcludedMethods | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:108 |
_.from | readonly | TFrom | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:104 |
_.hkt | readonly | PgUnthrownUpdateHKT | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:99 |
_.joins | readonly | TJoins | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:101 |
_.nullabilityMap | readonly | TNullabilityMap | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:102 |
_.queryResult | readonly | TQueryResult | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:103 |
_.result | readonly | TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[] | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:109 |
_.returning | readonly | TReturning | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:106 |
_.selectedFields | readonly | TSelectedFields | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:105 |
_.table | readonly | TTable | undefined | - | - | - | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:100 |
fullJoin | public | PgUpdateJoinFn<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "full"> | undefined | - | - | PgUpdateBase.fullJoin | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:126 |
innerJoin | public | PgUpdateJoinFn<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "inner"> | undefined | - | - | PgUpdateBase.innerJoin | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:125 |
leftJoin | public | PgUpdateJoinFn<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "left"> | undefined | - | - | PgUpdateBase.leftJoin | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:123 |
rightJoin | public | PgUpdateJoinFn<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "right"> | undefined | - | - | PgUpdateBase.rightJoin | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:124 |
then | readonly | ResultThen<UpdateResult<TQueryResult, TReturning>> | undefined | The then that makes a query builder awaitable, resolving to a Result. Remarks Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected). This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces. Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it. | - | - | packages/drizzle/src/pg-core/update.ts:131 |
[entityKind] | readonly | string | "PgUnthrownUpdate" | - | PgUpdateBase.[entityKind] | - | packages/drizzle/src/pg-core/update.ts:82 |
Methods
$dynamic()
$dynamic(): PgUnthrownUpdateBase<Assume<TTable, PgTable<TableConfig>>>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:191
Returns
PgUnthrownUpdateBase<Assume<TTable, PgTable<TableConfig>>>
Inherited from
PgUpdateBase.$dynamiccomment()
comment(comment): PgUpdateWithout<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "comment">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:188
Attach sqlcommenter comment to a query
Parameters
| Parameter | Type |
|---|---|
comment | CommentInput |
Returns
PgUpdateWithout<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "comment">
Inherited from
PgUpdateBase.commentexecute()
execute(placeholderValues?): AsyncResult<UpdateResult<TQueryResult, TReturning>, PgQueryError>;Defined in: packages/drizzle/src/pg-core/update.ts:123
Run the update, resolving to its result or a PgQueryError.
Parameters
| Parameter | Type |
|---|---|
placeholderValues? | Record<string, unknown> |
Returns
AsyncResult<UpdateResult<TQueryResult, TReturning>, PgQueryError>
from()
from<TFrom>(source): PgUpdateWithJoins<this, TDynamic, TFrom>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:120
Type Parameters
| Type Parameter |
|---|
TFrom extends | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | Subquery<string, Record<string, unknown>> |
Parameters
| Parameter | Type |
|---|---|
source | TableLikeHasEmptySelection<TFrom> extends true ? DrizzleTypeError<"Cannot reference a data-modifying statement subquery if it doesn't contain a `returning` clause"> : TFrom |
Returns
PgUpdateWithJoins<this, TDynamic, TFrom>
Inherited from
PgUpdateBase.fromgetSQL()
getSQL(): SQL;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:189
Returns
SQL
Inherited from
PgUpdateBase.getSQLprepare()
prepare(name): PgUnthrownPreparedQuery<PreparedQueryConfig & object>;Defined in: packages/drizzle/src/pg-core/update.ts:114
Create a prepared statement for this query. This allows the database to remember this query for the given session and call it by name, rather than specifying the full query.
Postgres prepare documentation
Parameters
| Parameter | Type |
|---|---|
name | string |
Returns
PgUnthrownPreparedQuery<PreparedQueryConfig & object>
returning()
Call Signature
returning(): PgUpdateWithout<PgUpdateKind<PgUnthrownUpdateHKT, TTable, TQueryResult, TFrom, Equal<TJoins, []> extends true ? TTable["_"]["columns"] : { [K in string | number | symbol]: (Record<TTable["_"]["name"], TTable["_"]["columns"]> & { [K in string | number | symbol as (...)[(...)]["table"]["_"]["name"]]: (...)[(...)]["table"]["_"]["columns"] })[K] }, SelectPartialResult<AccumulateToResult<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, "single", TJoins, GetSelectTableSelection<TTable>>, TNullabilityMap>, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:183
Adds a returning clause to the query.
Calling this method will return the specified fields of the updated rows. If no fields are specified, all fields will be returned.
See docs: https://orm.drizzle.team/docs/update#update-with-returning
Returns
PgUpdateWithout<PgUpdateKind<PgUnthrownUpdateHKT, TTable, TQueryResult, TFrom, Equal<TJoins, []> extends true ? TTable["_"]["columns"] : { [K in string | number | symbol]: (Record<TTable["_"]["name"], TTable["_"]["columns"]> & { [K in string | number | symbol as (...)[(...)]["table"]["_"]["name"]]: (...)[(...)]["table"]["_"]["columns"] })[K] }, SelectPartialResult<AccumulateToResult<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, "single", TJoins, GetSelectTableSelection<TTable>>, TNullabilityMap>, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic>
Example
// Update all cars with the green color and return all fields
const updatedCars: Car[] = await db.update(cars)
.set({ color: 'red' })
.where(eq(cars.color, 'green'))
.returning();
// Update all cars with the green color and return only their id and brand fields
const updatedCarsIdsAndBrands: { id: number, brand: string }[] = await db.update(cars)
.set({ color: 'red' })
.where(eq(cars.color, 'green'))
.returning({ id: cars.id, brand: cars.brand });Inherited from
PgUpdateBase.returningCall Signature
returning<TSelectedFields>(fields): PgUpdateWithout<PgUpdateKind<PgUnthrownUpdateHKT, TTable, TQueryResult, TFrom, TSelectedFields, SelectPartialResult<AccumulateToResult<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, "partial", TJoins, TSelectedFields>, TNullabilityMap>, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "returning">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:184
Adds a returning clause to the query.
Calling this method will return the specified fields of the updated rows. If no fields are specified, all fields will be returned.
See docs: https://orm.drizzle.team/docs/update#update-with-returning
Type Parameters
| Type Parameter |
|---|
TSelectedFields extends SelectedFields |
Parameters
| Parameter | Type |
|---|---|
fields | TSelectedFields |
Returns
PgUpdateWithout<PgUpdateKind<PgUnthrownUpdateHKT, TTable, TQueryResult, TFrom, TSelectedFields, SelectPartialResult<AccumulateToResult<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, "partial", TJoins, TSelectedFields>, TNullabilityMap>, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "returning">
Example
// Update all cars with the green color and return all fields
const updatedCars: Car[] = await db.update(cars)
.set({ color: 'red' })
.where(eq(cars.color, 'green'))
.returning();
// Update all cars with the green color and return only their id and brand fields
const updatedCarsIdsAndBrands: { id: number, brand: string }[] = await db.update(cars)
.set({ color: 'red' })
.where(eq(cars.color, 'green'))
.returning({ id: cars.id, brand: cars.brand });Inherited from
PgUpdateBase.returningshouldOmitSQLParens()?
optional shouldOmitSQLParens(): boolean;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/sql/sql.d.ts:49
Returns
boolean
Inherited from
PgUpdateBase.shouldOmitSQLParenstoSQL()
toSQL(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:190
Returns
Query
Inherited from
PgUpdateBase.toSQLwhere()
where(where): PgUpdateWithout<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "where">;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:160
Adds a 'where' clause to the query.
Calling this method will update only those rows that fulfill a specified condition.
See docs: https://orm.drizzle.team/docs/update
Parameters
| Parameter | Type | Description |
|---|---|---|
where | SQL<unknown> | undefined | the 'where' clause. |
Returns
PgUpdateWithout<PgUnthrownUpdateBase<TTable, TQueryResult, TFrom, TSelectedFields, TReturning, TNullabilityMap, TJoins, TDynamic, TExcludedMethods>, TDynamic, "where">
Example
You can use conditional operators and sql function to filter the rows to be updated.
// Update all cars with green color
await db.update(cars).set({ color: 'red' })
.where(eq(cars.color, 'green'));
// or
await db.update(cars).set({ color: 'red' })
.where(sql`${cars.color} = 'green'`)You can logically combine conditional operators with and() and or() operators:
// Update all BMW cars with a green color
await db.update(cars).set({ color: 'red' })
.where(and(eq(cars.color, 'green'), eq(cars.brand, 'BMW')));
// Update all cars with the green or blue color
await db.update(cars).set({ color: 'red' })
.where(or(eq(cars.color, 'green'), eq(cars.color, 'blue')));Inherited from
PgUpdateBase.wherePgUnthrownDeleteHKT
Defined in: packages/drizzle/src/pg-core/delete.ts:37
The higher-kinded type that keeps every chained delete method returning an unthrown builder rather than drizzle's own.
Remarks
See PgUnthrownSelectHKT for why this is an interface.
Extends
PgDeleteHKTBase
Properties
| Property | Type | Overrides | Inherited from | Defined in |
|---|---|---|---|---|
_type | PgUnthrownDeleteBase<PgTable<TableConfig>, PgQueryResultHKT, ColumnsSelection | undefined, Record<string, unknown> | undefined, boolean, string> | PgDeleteHKTBase._type | - | packages/drizzle/src/pg-core/delete.ts:38 |
dynamic | boolean | - | PgDeleteHKTBase.dynamic | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:33 |
excludedMethods | string | - | PgDeleteHKTBase.excludedMethods | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:34 |
queryResult | unknown | - | PgDeleteHKTBase.queryResult | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:30 |
returning | unknown | - | PgDeleteHKTBase.returning | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:32 |
selectedFields | unknown | - | PgDeleteHKTBase.selectedFields | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:31 |
table | unknown | - | PgDeleteHKTBase.table | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/delete.d.ts:29 |
PgUnthrownInsertHKT
Defined in: packages/drizzle/src/pg-core/insert.ts:36
The higher-kinded type that keeps every chained insert method returning an unthrown builder rather than drizzle's own.
Remarks
See PgUnthrownSelectHKT for why this is an interface.
Extends
PgInsertHKTBase
Properties
| Property | Type | Overrides | Inherited from | Defined in |
|---|---|---|---|---|
_type | PgUnthrownInsertBase<PgTable<TableConfig>, PgQueryResultHKT, unknown, unknown, boolean, string> | PgInsertHKTBase._type | - | packages/drizzle/src/pg-core/insert.ts:37 |
dynamic | boolean | - | PgInsertHKTBase.dynamic | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:66 |
excludedMethods | string | - | PgInsertHKTBase.excludedMethods | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:67 |
queryResult | unknown | - | PgInsertHKTBase.queryResult | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:63 |
result | unknown | - | PgInsertHKTBase.result | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:68 |
returning | unknown | - | PgInsertHKTBase.returning | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:65 |
selectedFields | unknown | - | PgInsertHKTBase.selectedFields | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:64 |
table | unknown | - | PgInsertHKTBase.table | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/insert.d.ts:62 |
PgUnthrownRelationalQueryHKT
Defined in: packages/drizzle/src/pg-core/query.ts:22
The higher-kinded type that makes db.query.<table>.findMany() build an unthrown relational query rather than drizzle's own.
Remarks
See PgUnthrownSelectHKT for why this is an interface.
Extends
PgRelationalQueryHKTBase
Properties
| Property | Type | Overrides | Inherited from | Defined in |
|---|---|---|---|---|
_type | PgUnthrownRelationalQuery<unknown> | PgRelationalQueryHKTBase._type | - | packages/drizzle/src/pg-core/query.ts:23 |
result | unknown | - | PgRelationalQueryHKTBase.result | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/query.d.ts:28 |
PgUnthrownSelectHKT
Defined in: packages/drizzle/src/pg-core/select.ts:35
The higher-kinded type that keeps every chained select method returning an unthrown builder rather than drizzle's own.
Remarks
Drizzle's base builders are container-agnostic: .where(), .limit() and the joins all rebuild this through PgSelectKind<THKT, …>, and the tree the query stays in is decided by this one type. It must be an interface — the pattern reads this["tableName"] and the polymorphic this type only exists inside an interface or class declaration.
Extends
PgSelectHKTBase
Properties
| Property | Type | Overrides | Inherited from | Defined in |
|---|---|---|---|---|
_type | PgUnthrownSelectBase<string | undefined, ColumnsSelection, SelectMode, Record<string, JoinNullability>, boolean, string, unknown[], ColumnsSelection> | PgSelectHKTBase._type | - | packages/drizzle/src/pg-core/select.ts:36 |
dynamic | boolean | - | PgSelectHKTBase.dynamic | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:82 |
excludedMethods | string | - | PgSelectHKTBase.excludedMethods | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:83 |
nullabilityMap | unknown | - | PgSelectHKTBase.nullabilityMap | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:81 |
result | unknown | - | PgSelectHKTBase.result | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:84 |
selectedFields | unknown | - | PgSelectHKTBase.selectedFields | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:85 |
selection | unknown | - | PgSelectHKTBase.selection | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:79 |
selectMode | SelectMode | - | PgSelectHKTBase.selectMode | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:80 |
tableName | string | undefined | - | PgSelectHKTBase.tableName | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/select.types.d.ts:78 |
PgUnthrownUpdateHKT
Defined in: packages/drizzle/src/pg-core/update.ts:41
The higher-kinded type that keeps every chained update method returning an unthrown builder rather than drizzle's own.
Remarks
See PgUnthrownSelectHKT for why this is an interface.
Extends
PgUpdateHKTBase
Properties
| Property | Type | Overrides | Inherited from | Defined in |
|---|---|---|---|---|
_type | PgUnthrownUpdateBase<PgTable<TableConfig>, PgQueryResultHKT, | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | Subquery<string, Record<string, unknown>> | undefined, ColumnsSelection | undefined, Record<string, unknown> | undefined, Record<string, JoinNullability>, Join[], boolean, string> | PgUpdateHKTBase._type | - | packages/drizzle/src/pg-core/update.ts:42 |
dynamic | boolean | - | PgUpdateHKTBase.dynamic | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:76 |
excludedMethods | string | - | PgUpdateHKTBase.excludedMethods | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:77 |
from | unknown | - | PgUpdateHKTBase.from | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:73 |
joins | unknown | - | PgUpdateHKTBase.joins | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:70 |
nullabilityMap | unknown | - | PgUpdateHKTBase.nullabilityMap | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:71 |
queryResult | unknown | - | PgUpdateHKTBase.queryResult | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:72 |
returning | unknown | - | PgUpdateHKTBase.returning | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:75 |
selectedFields | unknown | - | PgUpdateHKTBase.selectedFields | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:74 |
table | unknown | - | PgUpdateHKTBase.table | node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/query-builders/update.d.ts:69 |
PgUnthrownSelectBuilder
type PgUnthrownSelectBuilder<TSelection> = PgSelectBuilder<TSelection, PgUnthrownSelectHKT>;Defined in: packages/drizzle/src/pg-core/select.ts:53
The builder db.select() returns, before a table has been chosen.
Type Parameters
| Type Parameter |
|---|
TSelection extends SelectedFields | undefined |
ResultThen
type ResultThen<T, E> = <TResult1, TResult2>(onFulfilled?, onRejected?) => PromiseLike<TResult1 | TResult2>;Defined in: packages/drizzle/src/pg-core/awaitable.ts:40
The then that makes a query builder awaitable, resolving to a Result.
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
T | - | the value the query succeeds with; the awaited type is Result<T, E>. |
E | PgQueryError | the query's modeled error channel. Defaults to PgQueryError, which is what a write carries; the four read builders pass never, because a read has no modeled failure at all — see runSafeQuery. |
Type Parameters
| Type Parameter | Default type |
|---|---|
TResult1 | Result<T, E> |
TResult2 | never |
Parameters
| Parameter | Type |
|---|---|
onFulfilled? | ((value) => TResult1 | PromiseLike<TResult1>) | null |
onRejected? | ((reason) => TResult2 | PromiseLike<TResult2>) | null |
Returns
PromiseLike<TResult1 | TResult2>
Remarks
Drizzle's promise and Effect trees each make their builders runnable the same way: the builder carries a then that defers to execute(). The promise tree gets it from the QueryPromise mixin, whose then is literally this.execute().then(onFulfilled, onRejected).
This package cannot reuse that mixin. QueryPromise<T> declares execute(): Promise<T>, and ours returns an AsyncResult<T, PgQueryError> — so merging its type would contradict the very method it delegates to. (Its applyMixins helper is @internal and absent from drizzle's published .d.ts besides.) Each builder therefore declares this then itself, built by resultThen, with the awaited type it actually produces.
Awaiting a builder yields a Result, never a rejection: execute() returns an AsyncResult, whose internal promise never rejects, and the compilation step ahead of it runs inside the same boundary — see runQuery. catch and finally are deliberately not offered: there is no rejection for them to observe. onRejected is still forwarded, exactly as AsyncResult.then forwards it, so a hypothetical internal rejection settles the await instead of hanging it.
Database
PgUnthrownDatabase
Defined in: packages/drizzle/src/pg-core/db.ts:55
A Postgres database whose every query resolves to an AsyncResult.
Remarks
The unthrown sibling of drizzle's own PgAsyncDatabase (promises) and PgEffectDatabase (Effects). The entry points below only build queries — every one of them hands back a builder from this package's tree, and nothing touches the database until that builder is awaited or executed. That is why their bodies are drizzle's, unchanged but for the builder classes.
Extended by
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
TQueryResult extends PgQueryResultHKT | - | the driver's result kind, which decides what a write without .returning() resolves to. |
TRelations extends AnyRelations | EmptyRelations | the relational schema backing query. |
Constructors
Constructor
new PgUnthrownDatabase<TQueryResult, TRelations>(
dialect,
session,
relations,
parseRqbJson?,
tagged?): PgUnthrownDatabase<TQueryResult, TRelations>;Defined in: packages/drizzle/src/pg-core/db.ts:78
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
dialect | PgDialect | undefined | - |
session | PgUnthrownSession<unknown> | undefined | - |
relations | TRelations | undefined | - |
parseRqbJson | boolean | false | - |
tagged | boolean | false | - |
Returns
PgUnthrownDatabase<TQueryResult, TRelations>
Properties
| Property | Modifier | Type | Default value | Description | Defined in |
|---|---|---|---|---|---|
_ | readonly | object | undefined | - | packages/drizzle/src/pg-core/db.ts:61 |
_.relations | readonly | TRelations | undefined | - | packages/drizzle/src/pg-core/db.ts:62 |
_.session | readonly | PgUnthrownSession<unknown> | undefined | - | packages/drizzle/src/pg-core/db.ts:63 |
$with | readonly | WithBuilder | undefined | Creates a subquery that defines a temporary named result set as a CTE. It is useful for breaking down complex queries into simpler parts and for reusing the result set in subsequent parts of the query. See docs: https://orm.drizzle.team/docs/select#with-clause Param alias The alias for the subquery. Failure to provide an alias will result in a DrizzleTypeError, preventing the subquery from being referenced in other queries. Example // Create a subquery with alias 'sq' and use it in the select query const sq = db.$with("sq").as(db.select().from(users).where(eq(users.id, 42))); const rows = (await db.with(sq).select().from(sq)).get(); To select arbitrary SQL values as fields in a CTE and reference them in other CTEs or in the main query, you need to add aliases to them: // Select an arbitrary SQL value as a field in a CTE and reference it in the main query const sq = db.$with("sq").as( db .select({ name: sql<string>upper(${users.name}).as("name"), }) .from(users), ); const rows = (await db.with(sq).select({ name: sq.name }).from(sq)).get(); | packages/drizzle/src/pg-core/db.ts:173 |
query | readonly | { [K in string | number | symbol]: RelationalQueryBuilder<TRelations, TRelations[K], PgUnthrownRelationalQueryHKT> } | undefined | The relational query API — db.query.users.findMany(…), one entry per table in the relational schema. | packages/drizzle/src/pg-core/db.ts:70 |
tagged | readonly | boolean | false | - | packages/drizzle/src/pg-core/db.ts:85 |
[entityKind] | readonly | string | "PgUnthrownDatabase" | - | packages/drizzle/src/pg-core/db.ts:59 |
Methods
$count()
$count(source, filters?): PgUnthrownCountBuilder;Defined in: packages/drizzle/src/pg-core/db.ts:218
Count the rows a table, view or subquery yields, optionally filtered.
Parameters
| Parameter | Type |
|---|---|
source | | PgTable<TableConfig> | PgViewBase<string, boolean, ColumnsSelection> | SQL<unknown> | SQLWrapper<unknown> |
filters? | SQL<unknown> |
Returns
Example
const total = (await db.$count(users, eq(users.active, true))).get();
// ^? number — a count is a read, so its error channel is `never`.delete()
delete<TTable>(table): PgUnthrownDeleteBase<TTable, TQueryResult>;Defined in: packages/drizzle/src/pg-core/db.ts:613
Creates a delete query.
Calling this method without .where() clause will delete all rows in a table. The .where() clause specifies which rows should be deleted.
See docs: https://orm.drizzle.team/docs/delete
A write carries the full PgQueryError union — a delete can still raise 23505 through an ON DELETE SET DEFAULT — so awaiting the builder resolves to a Result you fold with mapErrCases or match.
Type Parameters
| Type Parameter |
|---|
TTable extends PgTable<TableConfig> |
Parameters
| Parameter | Type | Description |
|---|---|---|
table | TTable | The table to delete from. |
Returns
PgUnthrownDeleteBase<TTable, TQueryResult>
Example
// Delete all rows in the 'cars' table
const all = await db.delete(cars);
// ^? Result<DeleteResult<…>, PgQueryError>
// Delete rows with filters and conditions
await db.delete(cars).where(eq(cars.color, "green"));
// Delete with returning clause
const deleted = await db.delete(cars).where(eq(cars.id, 1)).returning();execute()
execute<TRow>(query): PgUnthrownRaw<PgQueryResultKind<TQueryResult, TRow>>;Defined in: packages/drizzle/src/pg-core/db.ts:650
Run a statement drizzle does not model — a raw SQL fragment or a string.
Type Parameters
| Type Parameter | Default type |
|---|---|
TRow extends Record<string, unknown> | Record<string, unknown> |
Parameters
| Parameter | Type |
|---|---|
query | string | SQLWrapper<unknown> |
Returns
PgUnthrownRaw<PgQueryResultKind<TQueryResult, TRow>>
Remarks
Unlike every other entry point, this one compiles its argument eagerly, because PgUnthrownRaw is defined as holding an already-prepared query (that is what makes its getSQL, getQuery and _prepare synchronous accessors, exactly as in drizzle). Compilation therefore happens here rather than at await, and a SQLWrapper that cannot compile throws at this call site instead of yielding a defect.
That is a deliberate line, not an oversight: the contract this package makes is about running a query — awaiting a builder, or calling its execute() — and db.execute(…) is the factory that produces one, not the run itself. The builder it returns is fully guarded. Reaching the throw takes handing in a query builder that is already broken (db.execute(db.select({ t: other.col }).from(users))); a string or a sql template — the documented use — cannot. Closing the gap would mean deferring compilation, which would cost PgRaw's shape and its synchronous accessors for a case where the argument, not the statement, is the bug.
Example
const result = await db.execute(sql`select now()`);insert()
insert<TTable>(table): PgInsertBuilder<TTable, TQueryResult, false, PgUnthrownInsertHKT>;Defined in: packages/drizzle/src/pg-core/db.ts:572
Creates an insert query.
Calling this method will create new rows in a table. Use .values() method to specify which values to insert.
See docs: https://orm.drizzle.team/docs/insert
A write carries the full PgQueryError union, so awaiting the builder resolves to a Result you fold with mapErrCases or match — never a rejection.
Type Parameters
| Type Parameter |
|---|
TTable extends PgTable<TableConfig> |
Parameters
| Parameter | Type | Description |
|---|---|---|
table | TTable | The table to insert into. |
Returns
PgInsertBuilder<TTable, TQueryResult, false, PgUnthrownInsertHKT>
Example
// Insert one row
const one = await db.insert(cars).values({ brand: "BMW" });
// ^? Result<InsertResult<…>, PgQueryError>
// Insert multiple rows
await db.insert(cars).values([{ brand: "BMW" }, { brand: "Porsche" }]);
// Insert with returning clause
const inserted = await db.insert(cars).values({ brand: "BMW" }).returning();refreshMaterializedView()
refreshMaterializedView<TView>(view): PgUnthrownRefreshMaterializedView<TQueryResult>;Defined in: packages/drizzle/src/pg-core/db.ts:618
Rebuild a materialized view's stored rows.
Type Parameters
| Type Parameter |
|---|
TView extends PgMaterializedView<string, boolean, ColumnsSelection> |
Parameters
| Parameter | Type |
|---|---|
view | TView |
Returns
PgUnthrownRefreshMaterializedView<TQueryResult>
select()
Call Signature
select(): PgUnthrownSelectBuilder<undefined>;Defined in: packages/drizzle/src/pg-core/db.ts:396
Creates a select query.
Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.
Use .from() method to specify which table to select from.
See docs: https://orm.drizzle.team/docs/select
Awaiting the builder resolves to a Result, never rows directly — a read has no modeled failure, so the error channel is never and .get() compiles.
Returns
PgUnthrownSelectBuilder<undefined>
Example
// Select all columns and all rows from the 'cars' table
const allCars = (await db.select().from(cars)).get();
// Select specific columns and all rows from the 'cars' table
const carsIdsAndBrands = (
await db
.select({
id: cars.id,
brand: cars.brand,
})
.from(cars)
).get();Call Signature
select<TSelection>(fields): PgUnthrownSelectBuilder<TSelection>;Defined in: packages/drizzle/src/pg-core/db.ts:397
Creates a select query.
Calling this method with no arguments will select all columns from the table. Pass a selection object to specify the columns you want to select.
Use .from() method to specify which table to select from.
See docs: https://orm.drizzle.team/docs/select
Awaiting the builder resolves to a Result, never rows directly — a read has no modeled failure, so the error channel is never and .get() compiles.
Type Parameters
| Type Parameter |
|---|
TSelection extends SelectedFields |
Parameters
| Parameter | Type |
|---|---|
fields | TSelection |
Returns
PgUnthrownSelectBuilder<TSelection>
Example
// Select all columns and all rows from the 'cars' table
const allCars = (await db.select().from(cars)).get();
// Select specific columns and all rows from the 'cars' table
const carsIdsAndBrands = (
await db
.select({
id: cars.id,
brand: cars.brand,
})
.from(cars)
).get();selectDistinct()
Call Signature
selectDistinct(): PgUnthrownSelectBuilder<undefined>;Defined in: packages/drizzle/src/pg-core/db.ts:437
Adds distinct expression to the select query.
Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.
Use .from() method to specify which table to select from. Pass a selection object to specify the columns you want to select.
See docs: https://orm.drizzle.team/docs/select#distinct
Returns
PgUnthrownSelectBuilder<undefined>
Example
// Select all unique rows from the 'cars' table
const unique = (
await db.selectDistinct().from(cars).orderBy(cars.id, cars.brand, cars.color)
).get();
// Select all unique brands from the 'cars' table
const brands = (
await db.selectDistinct({ brand: cars.brand }).from(cars).orderBy(cars.brand)
).get();Call Signature
selectDistinct<TSelection>(fields): PgUnthrownSelectBuilder<TSelection>;Defined in: packages/drizzle/src/pg-core/db.ts:438
Adds distinct expression to the select query.
Calling this method will return only unique values. When multiple columns are selected, it returns rows with unique combinations of values in these columns.
Use .from() method to specify which table to select from. Pass a selection object to specify the columns you want to select.
See docs: https://orm.drizzle.team/docs/select#distinct
Type Parameters
| Type Parameter |
|---|
TSelection extends SelectedFields |
Parameters
| Parameter | Type |
|---|---|
fields | TSelection |
Returns
PgUnthrownSelectBuilder<TSelection>
Example
// Select all unique rows from the 'cars' table
const unique = (
await db.selectDistinct().from(cars).orderBy(cars.id, cars.brand, cars.color)
).get();
// Select all unique brands from the 'cars' table
const brands = (
await db.selectDistinct({ brand: cars.brand }).from(cars).orderBy(cars.brand)
).get();selectDistinctOn()
Call Signature
selectDistinctOn(on): PgUnthrownSelectBuilder<undefined>;Defined in: packages/drizzle/src/pg-core/db.ts:483
Adds distinct on expression to the select query.
Calling this method will specify how the unique rows are determined.
Use .from() method to specify which table to select from. Pass a selection object as the second argument to specify the columns you want to select.
See docs: https://orm.drizzle.team/docs/select#distinct
Parameters
| Parameter | Type | Description |
|---|---|---|
on | ( | SQLWrapper<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }>)[] | The expression defining uniqueness. |
Returns
PgUnthrownSelectBuilder<undefined>
Example
// Select the first row for each unique brand from the 'cars' table
const firstPerBrand = (
await db.selectDistinctOn([cars.brand]).from(cars).orderBy(cars.brand)
).get();
// The first occurrence of each unique brand, with its color
const brandColors = (
await db
.selectDistinctOn([cars.brand], { brand: cars.brand, color: cars.color })
.from(cars)
.orderBy(cars.brand, cars.color)
).get();Call Signature
selectDistinctOn<TSelection>(on, fields): PgUnthrownSelectBuilder<TSelection>;Defined in: packages/drizzle/src/pg-core/db.ts:484
Adds distinct on expression to the select query.
Calling this method will specify how the unique rows are determined.
Use .from() method to specify which table to select from. Pass a selection object as the second argument to specify the columns you want to select.
See docs: https://orm.drizzle.team/docs/select#distinct
Type Parameters
| Type Parameter |
|---|
TSelection extends SelectedFields |
Parameters
| Parameter | Type | Description |
|---|---|---|
on | ( | SQLWrapper<unknown> | PgColumn<any, PgColumnBaseConfig<any>, { }>)[] | The expression defining uniqueness. |
fields | TSelection | - |
Returns
PgUnthrownSelectBuilder<TSelection>
Example
// Select the first row for each unique brand from the 'cars' table
const firstPerBrand = (
await db.selectDistinctOn([cars.brand]).from(cars).orderBy(cars.brand)
).get();
// The first occurrence of each unique brand, with its color
const brandColors = (
await db
.selectDistinctOn([cars.brand], { brand: cars.brand, color: cars.color })
.from(cars)
.orderBy(cars.brand, cars.color)
).get();update()
update<TTable>(table): PgUpdateBuilder<TTable, TQueryResult, PgUnthrownUpdateHKT>;Defined in: packages/drizzle/src/pg-core/db.ts:538
Creates an update query.
Calling this method without .where() clause will update all rows in a table. The .where() clause specifies which rows should be updated.
Use .set() method to specify which values to update.
See docs: https://orm.drizzle.team/docs/update
A write carries the full PgQueryError union, so awaiting the builder resolves to a Result you fold with mapErrCases or match — never a rejection.
Type Parameters
| Type Parameter |
|---|
TTable extends PgTable<TableConfig> |
Parameters
| Parameter | Type | Description |
|---|---|---|
table | TTable | The table to update. |
Returns
PgUpdateBuilder<TTable, TQueryResult, PgUnthrownUpdateHKT>
Example
// Update all rows in the 'cars' table
const all = await db.update(cars).set({ color: "red" });
// ^? Result<UpdateResult<…>, PgQueryError>
// Update rows with filters and conditions
await db.update(cars).set({ color: "red" }).where(eq(cars.brand, "BMW"));
// Update with returning clause
const updated = await db
.update(cars)
.set({ color: "red" })
.where(eq(cars.id, 1))
.returning();with()
with(...queries): object;Defined in: packages/drizzle/src/pg-core/db.ts:251
Incorporates a previously defined CTE (using $with) into the main query.
This method allows the main query to reference a temporary named result set.
See docs: https://orm.drizzle.team/docs/select#with-clause
Parameters
| Parameter | Type | Description |
|---|---|---|
...queries | WithSubquery<string, Record<string, unknown>>[] | The CTEs to incorporate into the main query. |
Returns
object
| Name | Type | Defined in |
|---|---|---|
delete() | <TTable>(table) => PgUnthrownDeleteBase<TTable, TQueryResult> | packages/drizzle/src/pg-core/db.ts:273 |
insert() | <TTable>(table) => PgInsertBuilder<TTable, TQueryResult, false, PgUnthrownInsertHKT> | packages/drizzle/src/pg-core/db.ts:270 |
select() | { (): PgUnthrownSelectBuilder<undefined>; <TSelection> (fields): PgUnthrownSelectBuilder<TSelection>; } | packages/drizzle/src/pg-core/db.ts:252 |
selectDistinct() | { (): PgUnthrownSelectBuilder<undefined>; <TSelection> (fields): PgUnthrownSelectBuilder<TSelection>; } | packages/drizzle/src/pg-core/db.ts:256 |
selectDistinctOn() | { (on): PgUnthrownSelectBuilder<undefined>; <TSelection> (on, fields): PgUnthrownSelectBuilder<TSelection>; } | packages/drizzle/src/pg-core/db.ts:260 |
update() | <TTable>(table) => PgUpdateBuilder<TTable, TQueryResult, PgUnthrownUpdateHKT> | packages/drizzle/src/pg-core/db.ts:267 |
Example
// Define a subquery 'sq' as a CTE using $with
const sq = db.$with("sq").as(db.select().from(users).where(eq(users.id, 42)));
// Incorporate the CTE 'sq' into the main query and select from it
const rows = (await db.with(sq).select().from(sq)).get();Other
CheckViolation
Defined in: packages/drizzle/src/errors.ts:29
A check constraint was violated (SQLSTATE 23514).
Extends
TaggedErrorInstance<"CheckViolation",ConstraintFields>
Constructors
Constructor
new CheckViolation(args): CheckViolation;Defined in: packages/core/dist/index.d.mts:1974
Parameters
| Parameter | Type |
|---|---|
args | ConstraintFields & object |
Returns
Inherited from
TaggedError("CheckViolation")<ConstraintFields>.constructorProperties
| Property | Modifier | Type | Default value | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|
_tag | readonly | "CheckViolation" | undefined | - | TaggedError("CheckViolation")._tag | packages/core/dist/index.d.mts:1951 |
cause | public | unknown | undefined | - | TaggedError("CheckViolation").cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
constraint | readonly | string | undefined | undefined | - | TaggedError("CheckViolation").constraint | packages/drizzle/src/errors.ts:10 |
detail | readonly | string | undefined | undefined | - | TaggedError("CheckViolation").detail | packages/drizzle/src/errors.ts:12 |
message | public | string | "check constraint violated" | TaggedError("CheckViolation").message | - | packages/drizzle/src/errors.ts:30 |
name | public | string | undefined | - | TaggedError("CheckViolation").name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
stack? | public | string | undefined | - | TaggedError("CheckViolation").stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
table | readonly | string | undefined | undefined | - | TaggedError("CheckViolation").table | packages/drizzle/src/errors.ts:11 |
ExclusionViolation
Defined in: packages/drizzle/src/errors.ts:34
An exclusion constraint was violated (SQLSTATE 23P01).
Extends
TaggedErrorInstance<"ExclusionViolation",ConstraintFields>
Constructors
Constructor
new ExclusionViolation(args): ExclusionViolation;Defined in: packages/core/dist/index.d.mts:1974
Parameters
| Parameter | Type |
|---|---|
args | ConstraintFields & object |
Returns
Inherited from
TaggedError("ExclusionViolation")<ConstraintFields>.constructorProperties
| Property | Modifier | Type | Default value | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|
_tag | readonly | "ExclusionViolation" | undefined | - | TaggedError("ExclusionViolation")._tag | packages/core/dist/index.d.mts:1951 |
cause | public | unknown | undefined | - | TaggedError("ExclusionViolation").cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
constraint | readonly | string | undefined | undefined | - | TaggedError("ExclusionViolation").constraint | packages/drizzle/src/errors.ts:10 |
detail | readonly | string | undefined | undefined | - | TaggedError("ExclusionViolation").detail | packages/drizzle/src/errors.ts:12 |
message | public | string | "exclusion constraint violated" | TaggedError("ExclusionViolation").message | - | packages/drizzle/src/errors.ts:35 |
name | public | string | undefined | - | TaggedError("ExclusionViolation").name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
stack? | public | string | undefined | - | TaggedError("ExclusionViolation").stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
table | readonly | string | undefined | undefined | - | TaggedError("ExclusionViolation").table | packages/drizzle/src/errors.ts:11 |
ForeignKeyViolation
Defined in: packages/drizzle/src/errors.ts:24
A foreign key constraint was violated (SQLSTATE 23503).
Extends
TaggedErrorInstance<"ForeignKeyViolation",ConstraintFields>
Constructors
Constructor
new ForeignKeyViolation(args): ForeignKeyViolation;Defined in: packages/core/dist/index.d.mts:1974
Parameters
| Parameter | Type |
|---|---|
args | ConstraintFields & object |
Returns
Inherited from
TaggedError("ForeignKeyViolation")<ConstraintFields>.constructorProperties
| Property | Modifier | Type | Default value | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|
_tag | readonly | "ForeignKeyViolation" | undefined | - | TaggedError("ForeignKeyViolation")._tag | packages/core/dist/index.d.mts:1951 |
cause | public | unknown | undefined | - | TaggedError("ForeignKeyViolation").cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
constraint | readonly | string | undefined | undefined | - | TaggedError("ForeignKeyViolation").constraint | packages/drizzle/src/errors.ts:10 |
detail | readonly | string | undefined | undefined | - | TaggedError("ForeignKeyViolation").detail | packages/drizzle/src/errors.ts:12 |
message | public | string | "foreign key constraint violated" | TaggedError("ForeignKeyViolation").message | - | packages/drizzle/src/errors.ts:25 |
name | public | string | undefined | - | TaggedError("ForeignKeyViolation").name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
stack? | public | string | undefined | - | TaggedError("ForeignKeyViolation").stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
table | readonly | string | undefined | undefined | - | TaggedError("ForeignKeyViolation").table | packages/drizzle/src/errors.ts:11 |
NotNullViolation
Defined in: packages/drizzle/src/errors.ts:45
A NOT NULL constraint was violated (SQLSTATE 23502).
Remarks
Carries column rather than constraint: 23502 names the offending column and has no constraint name of its own.
Extends
TaggedErrorInstance<"NotNullViolation", {cause:unknown;column:string|undefined;detail:string|undefined;table:string|undefined; }>
Constructors
Constructor
new NotNullViolation(args): NotNullViolation;Defined in: packages/core/dist/index.d.mts:1974
Parameters
| Parameter | Type |
|---|---|
args | object & object |
Returns
Inherited from
TaggedError("NotNullViolation")<{
column: string | undefined;
table: string | undefined;
detail: string | undefined;
cause: unknown;
}>.constructorProperties
| Property | Modifier | Type | Default value | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|
_tag | readonly | "NotNullViolation" | undefined | - | TaggedError("NotNullViolation")._tag | packages/core/dist/index.d.mts:1951 |
cause | public | unknown | undefined | - | TaggedError("NotNullViolation").cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
column | readonly | string | undefined | undefined | - | TaggedError("NotNullViolation").column | packages/drizzle/src/errors.ts:46 |
detail | readonly | string | undefined | undefined | - | TaggedError("NotNullViolation").detail | packages/drizzle/src/errors.ts:48 |
message | public | string | "not-null constraint violated" | TaggedError("NotNullViolation").message | - | packages/drizzle/src/errors.ts:51 |
name | public | string | undefined | - | TaggedError("NotNullViolation").name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
stack? | public | string | undefined | - | TaggedError("NotNullViolation").stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
table | readonly | string | undefined | undefined | - | TaggedError("NotNullViolation").table | packages/drizzle/src/errors.ts:47 |
UniqueConstraintViolation
Defined in: packages/drizzle/src/errors.ts:17
A unique constraint was violated (SQLSTATE 23505).
Extends
TaggedErrorInstance<"UniqueConstraintViolation",ConstraintFields>
Constructors
Constructor
new UniqueConstraintViolation(args): UniqueConstraintViolation;Defined in: packages/core/dist/index.d.mts:1974
Parameters
| Parameter | Type |
|---|---|
args | ConstraintFields & object |
Returns
Inherited from
TaggedError(
"UniqueConstraintViolation",
)<ConstraintFields>.constructorProperties
| Property | Modifier | Type | Default value | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|
_tag | readonly | "UniqueConstraintViolation" | undefined | - | TaggedError( "UniqueConstraintViolation", )._tag | packages/core/dist/index.d.mts:1951 |
cause | public | unknown | undefined | - | TaggedError( "UniqueConstraintViolation", ).cause | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24 |
constraint | readonly | string | undefined | undefined | - | TaggedError( "UniqueConstraintViolation", ).constraint | packages/drizzle/src/errors.ts:10 |
detail | readonly | string | undefined | undefined | - | TaggedError( "UniqueConstraintViolation", ).detail | packages/drizzle/src/errors.ts:12 |
message | public | string | "unique constraint violated" | TaggedError( "UniqueConstraintViolation", ).message | - | packages/drizzle/src/errors.ts:20 |
name | public | string | undefined | - | TaggedError( "UniqueConstraintViolation", ).name | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074 |
stack? | public | string | undefined | - | TaggedError( "UniqueConstraintViolation", ).stack | node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076 |
table | readonly | string | undefined | undefined | - | TaggedError( "UniqueConstraintViolation", ).table | packages/drizzle/src/errors.ts:11 |
DeleteResult
type DeleteResult<TQueryResult, TReturning> = TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[];Defined in: packages/drizzle/src/pg-core/delete.ts:22
What a delete resolves to: the driver's own result object, or the returned rows once .returning() has been called.
Type Parameters
| Type Parameter |
|---|
TQueryResult extends PgQueryResultHKT |
TReturning |
InsertResult
type InsertResult<TQueryResult, TReturning> = TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[];Defined in: packages/drizzle/src/pg-core/insert.ts:21
What an insert resolves to: the driver's own result object, or the returned rows once .returning() has been called.
Type Parameters
| Type Parameter |
|---|
TQueryResult extends PgQueryResultHKT |
TReturning |
PgQueryError
type PgQueryError =
| UniqueConstraintViolation
| ForeignKeyViolation
| NotNullViolation
| CheckViolation
| ExclusionViolation;Defined in: packages/drizzle/src/errors.ts:61
The full union of domain errors a Postgres query can surface.
Remarks
Infrastructure failures are deliberately absent — they are defects, not values. See qualifyPgError.
UpdateResult
type UpdateResult<TQueryResult, TReturning> = TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[];Defined in: packages/drizzle/src/pg-core/update.ts:26
What an update resolves to: the driver's own result object, or the returned rows once .returning() has been called.
Type Parameters
| Type Parameter |
|---|
TQueryResult extends PgQueryResultHKT |
TReturning |
qualifyPgError()
function qualifyPgError<D>(cause, defect): D | PgQueryError;Defined in: packages/drizzle/src/errors.ts:106
Triage a Postgres driver failure into the modeled error channel or the defect channel — a qualify in the Thesis-#3 sense, so it drops straight into a fromPromise at a boundary of your own.
Type Parameters
| Type Parameter |
|---|
D |
Parameters
| Parameter | Type | Description |
|---|---|---|
cause | unknown | the rejected value from a Postgres query (a node-postgres DatabaseError, a DrizzleQueryError wrapping one, or anything else). |
defect | (cause) => D | the defect helper the boundary injects (never import it). |
Returns
D | PgQueryError
Remarks
Only the five 23xxx integrity-constraint codes are modeled: they are what a request handler branches on. Everything else — serialization failure (40001), deadlock (40P01), statement timeout (57014), connection loss, syntax errors — is a defect. Retry belongs in one recoverDefect wrapper that inspects the cause, not an arm at every write call site.
Example
const rows = fromPromise(pool.query("select 1"), qualifyPgError);Session
PgUnthrownPreparedQuery
Defined in: packages/drizzle/src/pg-core/session.ts:59
A prepared query whose execution yields an AsyncResult.
Remarks
This is the single place in the package where a driver rejection is triaged. Everything above it — the builder tree, the database facade — is type plumbing; the container swap happens here, and only here, because drizzle declares PgBasePreparedQuery.execute() as returning unknown.
Every failure leaves execute as either a modeled PgQueryError or a defect, so the returned AsyncResult's internal promise never rejects and awaiting it never throws.
Extends
PgBasePreparedQuery
Extended by
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
T extends PreparedQueryConfig | PreparedQueryConfig | drizzle's per-query config, whose execute member is the value the query resolves to. |
Constructors
Constructor
new PgUnthrownPreparedQuery<T>(
executor,
query,
mapper,
mode,
logger): PgUnthrownPreparedQuery<T>;Defined in: packages/drizzle/src/pg-core/session.ts:73
Parameters
| Parameter | Type | Description |
|---|---|---|
executor | (params) => Promise<unknown> | runs the query against the driver with the given bound parameters. Its rejection is what execute triages. |
query | Query | the compiled SQL and its parameter list. |
mapper | PgRowMapper | undefined | maps the driver's rows to the query's declared result, or undefined to pass the driver's value through untouched. |
mode | PgQueryMode | the row shape the driver was asked for. |
logger | Logger | drizzle's query logger. |
Returns
Overrides
PgBasePreparedQuery.constructorProperties
| Property | Modifier | Type | Default value | Description | Overrides | Defined in |
|---|---|---|---|---|---|---|
mode | readonly | PgQueryMode | undefined | the row shape the driver was asked for. | - | packages/drizzle/src/pg-core/session.ts:77 |
[entityKind] | readonly | string | "PgUnthrownPreparedQuery" | - | PgBasePreparedQuery.[entityKind] | packages/drizzle/src/pg-core/session.ts:62 |
Methods
execute()
execute(placeholderValues?): AsyncResult<T["execute"], PgQueryError>;Defined in: packages/drizzle/src/pg-core/session.ts:142
Run the query, triaging any driver failure into the error or defect channel.
Parameters
| Parameter | Type | Description |
|---|---|---|
placeholderValues | Record<string, unknown> | values for the query's named placeholders. |
Returns
AsyncResult<T["execute"], PgQueryError>
Remarks
The promise is started from a thunk so that a synchronous throw — a missing placeholder value, a driver that validates its arguments eagerly — is caught by the same boundary as a rejection. execute therefore neither throws nor rejects: awaiting it always yields a Result.
Overrides
PgBasePreparedQuery.executegetQuery()
getQuery(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/session.d.ts:15
Returns
Query
Inherited from
PgBasePreparedQuery.getQueryPgUnthrownSafePreparedQuery
Defined in: packages/drizzle/src/pg-core/session.ts:201
A prepared query whose every failure is a defect — the read builders' half of PgUnthrownPreparedQuery.
Remarks
A read has no modeled failure (see runSafeQuery), so the four read builders declare E = never. Their prepare(name) returns one of these, so running a prepared read reaches the same fromSafePromise boundary that execute() and await do — all three routes agree, and none of them can put a value in a channel the type calls empty.
This is a subclass rather than a type parameter on PgUnthrownPreparedQuery deliberately. A parameterised E would have to pick its boundary from a constructor-injected function, and the injected default (fromPromise + qualifyPgError, typed PgQueryError) is not assignable to an unresolved E — so the single-class form needs a cast exactly where the type and the runtime must not be allowed to drift apart. Overriding execute needs none: AsyncResult is covariant in E, so AsyncResult<T, never> already satisfies the base's declaration, and the narrower type is reachable only through this class, whose execute is the safe one. The weld is by construction.
Extends
Type Parameters
| Type Parameter | Default type | Description |
|---|---|---|
T extends PreparedQueryConfig | PreparedQueryConfig | drizzle's per-query config, whose execute member is the value the query resolves to. |
Constructors
Constructor
new PgUnthrownSafePreparedQuery<T>(
executor,
query,
mapper,
mode,
logger): PgUnthrownSafePreparedQuery<T>;Defined in: packages/drizzle/src/pg-core/session.ts:73
Parameters
| Parameter | Type | Description |
|---|---|---|
executor | (params) => Promise<unknown> | runs the query against the driver with the given bound parameters. Its rejection is what execute triages. |
query | Query | the compiled SQL and its parameter list. |
mapper | PgRowMapper | undefined | maps the driver's rows to the query's declared result, or undefined to pass the driver's value through untouched. |
mode | PgQueryMode | the row shape the driver was asked for. |
logger | Logger | drizzle's query logger. |
Returns
PgUnthrownSafePreparedQuery<T>
Inherited from
PgUnthrownPreparedQuery.constructor
Properties
| Property | Modifier | Type | Default value | Description | Overrides | Inherited from | Defined in |
|---|---|---|---|---|---|---|---|
mode | readonly | PgQueryMode | undefined | the row shape the driver was asked for. | - | PgUnthrownPreparedQuery.mode | packages/drizzle/src/pg-core/session.ts:77 |
[entityKind] | readonly | string | "PgUnthrownSafePreparedQuery" | - | PgUnthrownPreparedQuery.[entityKind] | - | packages/drizzle/src/pg-core/session.ts:204 |
Methods
execute()
execute(placeholderValues?): AsyncResult<T["execute"], never>;Defined in: packages/drizzle/src/pg-core/session.ts:213
Run the query. Every failure — a constraint violation raised by a volatile function the read called included — is a Defect; the error channel is never.
Parameters
| Parameter | Type | Description |
|---|---|---|
placeholderValues | Record<string, unknown> | values for the query's named placeholders. |
Returns
AsyncResult<T["execute"], never>
Overrides
PgUnthrownPreparedQuery.execute
getQuery()
getQuery(): Query;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/session.d.ts:15
Returns
Query
Inherited from
PgUnthrownPreparedQuery.getQuery
abstract PgUnthrownSession
Defined in: packages/drizzle/src/pg-core/session.ts:237
The session every unthrown Postgres driver implements.
Remarks
The mirror of drizzle's own PgAsyncSession / PgEffectSession: PgSession declares execute / arrays / objects as returning unknown, which is precisely the seam that lets a fourth execution container — AsyncResult — be plugged in alongside promises and Effects.
Extends
PgSession
Extended by
Type Parameters
| Type Parameter | Description |
|---|---|
TTransaction | the transaction handle passed to a PgUnthrownSession.transaction callback. It is a parameter rather than a concrete type because the transaction class is built on top of the database facade, which in turn is built on this session; the driver that owns both supplies it. |
Constructors
Constructor
new PgUnthrownSession<TTransaction>(dialect): PgUnthrownSession<TTransaction>;Defined in: node_modules/.pnpm/drizzle-orm@1.0.0-rc.4_@electric-sql+pglite@0.4.3_@types+pg@8.20.0_better-sqlite3@13.0._f9f611f9fbac41e3f2739523b91c19d3/node_modules/drizzle-orm/pg-core/session.d.ts:26
Parameters
| Parameter | Type |
|---|---|
dialect | PgDialect |
Returns
PgUnthrownSession<TTransaction>
Inherited from
PgSession.constructorProperties
| Property | Modifier | Type | Default value | Overrides | Defined in |
|---|---|---|---|---|---|
[entityKind] | readonly | string | "PgUnthrownSession" | PgSession.[entityKind] | packages/drizzle/src/pg-core/session.ts:238 |
Methods
arrays()
arrays(query): AsyncResult<unknown, PgQueryError>;Defined in: packages/drizzle/src/pg-core/session.ts:276
Run a raw SQL fragment, returning each row as an array of column values.
Parameters
| Parameter | Type |
|---|---|
query | SQL |
Returns
AsyncResult<unknown, PgQueryError>
Overrides
PgSession.arraysexecute()
execute(query): AsyncResult<unknown, PgQueryError>;Defined in: packages/drizzle/src/pg-core/session.ts:271
Run a raw SQL fragment, returning the driver's own result object.
Parameters
| Parameter | Type |
|---|---|
query | SQL |
Returns
AsyncResult<unknown, PgQueryError>
Remarks
Compilation runs inside the failure boundary — see runQuery. dialect.sqlToQuery throws for mistakes that are type-legal and reachable, and a throw escaping here would land on a caller who has no try/catch, because this method's contract is a Result.
Overrides
PgSession.executeobjects()
objects(query): AsyncResult<unknown, PgQueryError>;Defined in: packages/drizzle/src/pg-core/session.ts:281
Run a raw SQL fragment, returning each row as a column-keyed object.
Parameters
| Parameter | Type |
|---|---|
query | SQL |
Returns
AsyncResult<unknown, PgQueryError>
Overrides
PgSession.objectsprepareQuery()
abstract prepareQuery<T>(
query,
mode,
name,
mapper?,
queryMetadata?,
cacheConfig?): PgUnthrownPreparedQuery<T>;Defined in: packages/drizzle/src/pg-core/session.ts:240
Type Parameters
| Type Parameter | Default type |
|---|---|
T extends PreparedQueryConfig | PreparedQueryConfig |
Parameters
| Parameter | Type |
|---|---|
query | Query |
mode | PgQueryMode |
name | string | boolean |
mapper? | PgRowMapper |
queryMetadata? | { tables: string[]; type: "insert" | "update" | "select" | "delete"; } |
queryMetadata.tables? | string[] |
queryMetadata.type? | "insert" | "update" | "select" | "delete" |
cacheConfig? | WithCacheConfig |
Returns
Overrides
PgSession.prepareQuerytransaction()
abstract transaction<A, E>(fn, config?): AsyncResult<A, PgQueryError | E>;Defined in: packages/drizzle/src/pg-core/session.ts:257
Run fn inside a database transaction.
Type Parameters
| Type Parameter |
|---|
A |
E |
Parameters
| Parameter | Type |
|---|---|
fn | (tx) => AsyncResult<A, E> |
config? | PgTransactionConfig |
Returns
AsyncResult<A, PgQueryError | E>
Remarks
An Err from fn rolls back and re-surfaces typed; a defect rolls back and stays a defect. The transaction's own control statements can fail too, so PgQueryError joins the callback's error channel.
PgQueryMode
type PgQueryMode = "arrays" | "objects" | "raw";Defined in: packages/drizzle/src/pg-core/session.ts:22
The row shapes a prepared query can be asked to produce.
PgRowMapper
type PgRowMapper = (rows) => unknown;Defined in: packages/drizzle/src/pg-core/session.ts:39
A row mapper, as handed over by a drizzle query builder.
Parameters
| Parameter | Type |
|---|---|
rows | never[] |
Returns
unknown
Remarks
The parameter is never[] — the bottom array type — deliberately. The session never inspects rows: it forwards whatever the driver produced to the mapper the builder supplied, and each builder asks for a different row shape (unknown[][] for a column-array select, unknown[][] | Record<string, unknown>[] for a relational query). Under strictFunctionTypes a parameter is checked contravariantly, so never[] is the one parameter type every such mapper is assignable to. Spelling it any[] would accept exactly the same set while giving up type-checking inside every mapper that reads it.