Delete mutation

Auto-generated delete mutation schema

For example, the auto-generated schema for the delete mutation field for a table article looks like this:

delete_article (
  where: article_bool_exp!
): article_mutation_response

# response of any mutation on the table "article"
type article_mutation_response {
  # number of affected rows by the mutation
  affected_rows: Int!
  #data of the affected rows by the mutation
  returning: [article!]!
}

As you can see from the schema:

  • where argument is compulsory to filter rows to be deleted. See Filter queries for filtering options. Objects can be deleted based on filters on their own fields or those in their nested objects.
  • You can return the number of affected rows and the affected objects (with nested objects) in the response.

See the delete mutation API reference for the full specifications

Note

  • If a table is not in the public Postgres schema, the delete mutation field will be of the format delete_<schema_name>_<table_name>.
  • To fetch nested objects using relationships in the mutation response, the table needs to have either a primary key or a unique constraint with not null columns.

Delete based on an object’s fields

Example: Delete all articles rated less than 3:

mutation delete_low_rated_articles {
  delete_article(
    where: {rating: {_lt: 3}}
  ) {
    affected_rows
  }
}
mutation delete_low_rated_articles { delete_article( where: {rating: {_lt: 3}} ) { affected_rows } }
{ "data": { "delete_low_rated_articles": { "affected_rows": 8 } } }

Delete based on a nested object’s fields

Example: Delete all articles written by a particular author:

mutation delete_authors_articles {
  delete_article(
    where: {author: {name: {_eq: "Corny"}}}
  ) {
    affected_rows
  }
}
mutation delete_authors_articles { delete_article( where: {author: {name: {_eq: "Corny"}}} ) { affected_rows } }
{ "data": { "delete_authors_articles": { "affected_rows": 2 } } }