Multiple mutations in a request

If multiple mutations are part of the same request, they are executed sequentially in a single transaction. If any of the mutations fail, all the executed mutations will be rolled back.

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" } } ] } } }