Multiple mutations in a request

If multiple mutations are part of the same request, they are executed sequentially. If any of the mutations fail, all the executed mutations will be rolled back (i.e. all the mutations are run as a transaction).

Run multiple top level mutations transactionally

Example: Delete all article objects written by an author and update the author object

mutation reset_author {
  delete_article (
    where: {author_id: {_eq: 6}}
  ) {
    affected_rows
  }
  update_author (
    where: {id: {_eq: 6}}
    _set: {name: "Cory"}
  ) {
    returning {
      id
      name
      articles {
        id
        title
      }
    }
  }
}
mutation reset_author { delete_article ( where: {author_id: {_eq: 6}} ) { affected_rows } update_author ( where: {id: {_eq: 6}} _set: {name: "Cory"} ) { returning { id name articles { id title } } } }
{ "data": { "delete_article": { "affected_rows": 2 }, "update_author": { "returning": [ { "id": 6, "name": "Cory", "articles": [] } ] } } }

Insert an object and a nested object in the same mutation

If you are trying to insert multiple objects which have relationships between them, you can use nested inserts.

Example: Insert a new article object with its author and return the inserted article object with its author in the response

mutation insert_article {
  insert_article(
    objects: [
      {
        id: 21,
        title: "Article 1",
        content: "Sample article content",
        author: {
          data: {
            id: 11,
            name: "Cory"
          }
        }
      }
    ]
  ) {
    affected_rows
    returning {
      id
      title
      author {
        id
        name
      }
    }
  }
}
mutation insert_article { insert_article( objects: [ { id: 21, title: "Article 1", content: "Sample article content", author: { data: { id: 11, name: "Cory" } } } ] ) { affected_rows returning { id title author { id name } } } }
{ "data": { "insert_article": { "affected_rows": 2, "returning": [ { "id": 21, "title": "Article 1", "author": { "id": 11, "name": "Cory" } } ] } } }