Insert mutation

Insert single object

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

mutation insert_article {
  insert_article(
    objects: [
      {
        id: 21,
        title: "Article 1",
        content: "Sample article content",
        author_id: 3
      }
    ]
  ) {
    returning {
      id
      title
    }
  }
}
mutation insert_article { insert_article( objects: [ { id: 21, title: "Article 1", content: "Sample article content", author_id: 3 } ] ) { returning { id title } } }
{ "data": { "insert_article": { "affected_rows": 1, "returning": [ { "id": 21, "title": "Article 1" } ] } } }

OR

mutation insert_article($objects: [article_insert_input!]! ) {
  insert_article(objects: $objects) {
    returning {
      id
      title
    }
  }
}
mutation insert_article($objects: [article_insert_input!]! ) { insert_article(objects: $objects) { returning { id title } } }
{ "data": { "insert_article": { "affected_rows": 1, "returning": [ { "id": 21, "title": "Article 1" } ] } } }

with variables:

{
  "objects": [
    {
      "id": 21,
      "title": "Article 1",
      "content": "Sample article content",
      "author_id": 3
    }
  ]
}

Insert multiple objects of the same type in the same mutation

Example: Insert 2 new article objects and return both the article objects in the response

mutation insert_article {
  insert_article(
    objects: [
      {
        id: 22,
        title: "Article 2",
        content: "Sample article content",
        author_id: 4
      },
      {
        id: 23,
        title: "Article 3",
        content: "Sample article content",
        author_id: 5
      }
    ]
  ) {
    returning {
      id
      title
    }
  }
}
mutation insert_article { insert_article( objects: [ { id: 22, title: "Article 2", content: "Sample article content", author_id: 4 }, { id: 23, title: "Article 3", content: "Sample article content", author_id: 5 } ] ) { returning { id title } } }
{ "data": { "insert_article": { "affected_rows": 2, "returning": [ { "id": 22, "title": "Article 2" }, { "id": 23, "title": "Article 3" } ] } } }

Insert object and get nested object in response

Example: Insert a new article object 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_id: 3
      }
    ]
  ) {
    returning {
      id
      title
      author {
        id
        name
      }
    }
  }
}
mutation insert_article { insert_article( objects: [ { id: 21, title: "Article 1", content: "Sample article content", author_id: 3 } ] ) { returning { id title author { id name } } } }
{ "data": { "insert_article": { "affected_rows": 1, "returning": [ { "id": 21, "title": "Article 1", "author": { "id": 3, "name": "Sidney" } } ] } } }

Set field to its default value during insert

To set a field to its default value, just omit it from the input object.

Example: if default value of id is set to auto-incrementing integer, no need to pass id field in input object

mutation insert_article_with_def_id {
  insert_article(
    objects: [
      {
        title: "Article 1",
        content: "Sample article content",
        author_id: 3
      }
    ]
  ) {
    returning {
      id
      title
    }
  }
}
mutation insert_article_with_def_id { insert_article( objects: [ { title: "Article 1", content: "Sample article content", author_id: 3 } ] ) { returning { id title } } }
{ "data": { "insert_article": { "affected_rows": 1, "returning": [ { "id": 21, "title": "Article 1" } ] } } }

Set field to null during insert

If a field is nullable in the database, to set its value to null, either pass its value as null or just omit it from the input object.

Example: if age is a nullable field, either don’t pass age field in input object or pass it as null to set it to null

mutation insert_author_with_null_age {
  insert_author(
    objects: [
      {
        name: "Jeff",
      }
    ]
  ) {
    returning {
      id
      name
      age
    }
  }
}
mutation insert_author_with_null_age { insert_author( objects: [ { name: "Jeff", } ] ) { returning { id name age } } }
{ "data": { "insert_author": { "returning": [ { "id": 11, "name": "Jeff", "age": null } ] } } }

OR

mutation insert_author_with_null_age {
  insert_author(
    objects: [
      {
        name: "Jeff",
        age: null
      }
    ]
  ) {
    returning {
      id
      name
      age
    }
  }
}
mutation insert_author_with_null_age { insert_author( objects: [ { name: "Jeff", age: null } ] ) { returning { id name age } } }
{ "data": { "insert_author": { "returning": [ { "id": 11, "name": "Jeff", "age": null } ] } } }