Multiple mutations in a request¶
Table of contents
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"
}
}
]
}
}
}
Was this page helpful?