Safe Haskell | None |
---|---|
Language | Haskell2010 |
Inserts, updates and deletes
Please note that you currently you can only INSERT or UPDATE with constant values, not the result of SELECTS. That is, you can generate SQL of the form
INSERT INTO thetable (John
, 1);
but not
INSERT INTO thetable
SELECT John
,
(SELECT num FROM thetable ORDER BY num DESC LIMIT 1) + 1;
- runInsertMany :: Connection -> Table columns columns' -> [columns] -> IO Int64
- runInsertManyReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> columnsReturned) -> IO [haskells]
- runUpdate :: Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> IO Int64
- runUpdateReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> IO [haskells]
- runDelete :: Connection -> Table a columnsR -> (columnsR -> Column PGBool) -> IO Int64
- runInsertReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells]
- runInsertManyReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> columnsReturned) -> IO [haskells]
- runUpdateReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> IO [haskells]
- runInsert :: Connection -> Table columns columns' -> columns -> IO Int64
- runInsertReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells]
- arrangeInsert :: Table columns a -> columns -> SqlInsert
- arrangeInsertSql :: Table columns a -> columns -> String
- arrangeInsertMany :: Table columns a -> NonEmpty columns -> SqlInsert
- arrangeInsertManySql :: Table columns a -> NonEmpty columns -> String
- arrangeUpdate :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> SqlUpdate
- arrangeUpdateSql :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> String
- arrangeDelete :: Table a columnsR -> (columnsR -> Column PGBool) -> SqlDelete
- arrangeDeleteSql :: Table a columnsR -> (columnsR -> Column PGBool) -> String
- arrangeInsertManyReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> Returning SqlInsert
- arrangeInsertManyReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> String
- arrangeUpdateReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> Returning SqlUpdate
- arrangeUpdateReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> String
- data Unpackspec columns columns'
Manipulation functions
:: Connection | |
-> Table columns columns' | Table to insert into |
-> [columns] | Rows to insert |
-> IO Int64 | Number of rows inserted |
Insert rows into a table
runInsertManyReturning Source #
:: Default QueryRunner columnsReturned haskells | |
=> Connection | |
-> Table columnsW columnsR | Table to insert into |
-> [columnsW] | Rows to insert |
-> (columnsR -> columnsReturned) | Function |
-> IO [haskells] | Returned rows after |
Insert rows into a table and return a function of the inserted rows
runInsertManyReturning
's use of the Default
typeclass means that the
compiler will have trouble inferring types. It is strongly
recommended that you provide full type signatures when using
runInsertManyReturning
.
:: Connection | |
-> Table columnsW columnsR | Table to update |
-> (columnsR -> columnsW) | Update function to apply to chosen rows |
-> (columnsR -> Column PGBool) | Predicate function |
-> IO Int64 | The number of rows updated |
Update rows in a table
:: Default QueryRunner columnsReturned haskells | |
=> Connection | |
-> Table columnsW columnsR | Table to update |
-> (columnsR -> columnsW) | Update function to apply to chosen rows |
-> (columnsR -> Column PGBool) | Predicate function |
-> (columnsR -> columnsReturned) | Functon |
-> IO [haskells] | Returned rows after |
Update rows in a table and return a function of the updated rows
runUpdateReturning
's use of the Default
typeclass means
that the compiler will have trouble inferring types. It is
strongly recommended that you provide full type signatures when
using runInsertReturning
.
:: Connection | |
-> Table a columnsR | Table to delete rows from |
-> (columnsR -> Column PGBool) | Predicate function |
-> IO Int64 | The number of rows deleted |
Delete rows from a table
Explicit versions
runInsertReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells] Source #
You probably don't need this, but can just use
runInsertReturning
instead. You only need it if you want to run
an INSERT RETURNING statement but need to be explicit about the
QueryRunner
.
runInsertManyReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> [columnsW] -> (columnsR -> columnsReturned) -> IO [haskells] Source #
You probably don't need this, but can just use
runInsertManyReturning
instead. You only need it if you want to
run an UPDATE RETURNING statement but need to be explicit about the
QueryRunner
.
runUpdateReturningExplicit :: QueryRunner columnsReturned haskells -> Connection -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> IO [haskells] Source #
You probably don't need this, but can just use
runUpdateReturning
instead. You only need it if you want to run
an UPDATE RETURNING statement but need to be explicit about the
QueryRunner
.
Deprecated versions
runInsert :: Connection -> Table columns columns' -> columns -> IO Int64 Source #
Returns the number of rows inserted
This will be deprecated in version 0.6. Use runInsertMany
instead.
runInsertReturning :: Default QueryRunner columnsReturned haskells => Connection -> Table columnsW columnsR -> columnsW -> (columnsR -> columnsReturned) -> IO [haskells] Source #
runInsertReturning
's use of the Default
typeclass means that the
compiler will have trouble inferring types. It is strongly
recommended that you provide full type signatures when using
runInsertReturning
.
This will be deprecated in version 0.6. Use
runInsertManyReturning
instead.
arrangeInsert :: Table columns a -> columns -> SqlInsert Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertSql :: Table columns a -> columns -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertMany :: Table columns a -> NonEmpty columns -> SqlInsert Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertManySql :: Table columns a -> NonEmpty columns -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdate :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> SqlUpdate Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdateSql :: Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeDelete :: Table a columnsR -> (columnsR -> Column PGBool) -> SqlDelete Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeDeleteSql :: Table a columnsR -> (columnsR -> Column PGBool) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertManyReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> Returning SqlInsert Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeInsertManyReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> NonEmpty columnsW -> (columnsR -> columnsReturned) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdateReturning :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> Returning SqlUpdate Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
arrangeUpdateReturningSql :: Unpackspec columnsReturned ignored -> Table columnsW columnsR -> (columnsR -> columnsW) -> (columnsR -> Column PGBool) -> (columnsR -> columnsReturned) -> String Source #
For internal use only. Do not use. Will be deprecated in version 0.6.
Other
data Unpackspec columns columns' Source #