Likeinsert, except that if the row already exists, then its column values are overwritten with the ones provided. Any column values not explicitly written are preserved. When usinginsert_or_update, just as when usinginsert, allNOT NULLcolumns in the table must be given a value. This holds true even when the row already exists and will therefore actually be updated.
Likeinsert, except that if the row already exists, it is deleted, and the column values provided are inserted instead. Unlikeinsert_or_update, this means any values not explicitly written becomeNULL. In an interleaved table, if you create the child table with theON DELETE CASCADEannotation, then replacing a parent row also deletes the child rows. Otherwise, you must delete the child rows before you replace the parent row.
Likeinsert, except that if the row already exists, then
its column values are overwritten with the ones provided. Any
column values not explicitly written are preserved.
When usinginsert_or_update, just as when usinginsert, allNOT
NULLcolumns in the table must be given a value. This holds true
even when the row already exists and will therefore actually be updated.
Likeinsert, except that if the row already exists, then
its column values are overwritten with the ones provided. Any
column values not explicitly written are preserved.
When usinginsert_or_update, just as when usinginsert, allNOT
NULLcolumns in the table must be given a value. This holds true
even when the row already exists and will therefore actually be updated.
Likeinsert, except that if the row already exists, it is
deleted, and the column values provided are inserted
instead. Unlikeinsert_or_update, this means any values not
explicitly written becomeNULL.
In an interleaved table, if you create the child table with theON DELETE CASCADEannotation, then replacing a parent row
also deletes the child rows. Otherwise, you must delete the
child rows before you replace the parent row.
Likeinsert, except that if the row already exists, it is
deleted, and the column values provided are inserted
instead. Unlikeinsert_or_update, this means any values not
explicitly written becomeNULL.
In an interleaved table, if you create the child table with theON DELETE CASCADEannotation, then replacing a parent row
also deletes the child rows. Otherwise, you must delete the
child rows before you replace the parent row.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Cloud Spanner V1 Client - Class Mutation (1.104.0)\n\nVersion latestkeyboard_arrow_down\n\n- [1.104.0 (latest)](/php/docs/reference/cloud-spanner/latest/V1.Mutation)\n- [1.103.0](/php/docs/reference/cloud-spanner/1.103.0/V1.Mutation)\n- [1.102.0](/php/docs/reference/cloud-spanner/1.102.0/V1.Mutation)\n- [1.101.0](/php/docs/reference/cloud-spanner/1.101.0/V1.Mutation)\n- [1.100.0](/php/docs/reference/cloud-spanner/1.100.0/V1.Mutation)\n- [1.98.0](/php/docs/reference/cloud-spanner/1.98.0/V1.Mutation)\n- [1.97.0](/php/docs/reference/cloud-spanner/1.97.0/V1.Mutation)\n- [1.96.0](/php/docs/reference/cloud-spanner/1.96.0/V1.Mutation)\n- [1.95.0](/php/docs/reference/cloud-spanner/1.95.0/V1.Mutation)\n- [1.94.0](/php/docs/reference/cloud-spanner/1.94.0/V1.Mutation)\n- [1.93.1](/php/docs/reference/cloud-spanner/1.93.1/V1.Mutation)\n- [1.92.1](/php/docs/reference/cloud-spanner/1.92.1/V1.Mutation)\n- [1.91.0](/php/docs/reference/cloud-spanner/1.91.0/V1.Mutation)\n- [1.90.0](/php/docs/reference/cloud-spanner/1.90.0/V1.Mutation)\n- [1.89.0](/php/docs/reference/cloud-spanner/1.89.0/V1.Mutation)\n- [1.88.0](/php/docs/reference/cloud-spanner/1.88.0/V1.Mutation)\n- [1.87.0](/php/docs/reference/cloud-spanner/1.87.0/V1.Mutation)\n- [1.86.0](/php/docs/reference/cloud-spanner/1.86.0/V1.Mutation)\n- [1.85.0](/php/docs/reference/cloud-spanner/1.85.0/V1.Mutation)\n- [1.84.0](/php/docs/reference/cloud-spanner/1.84.0/V1.Mutation)\n- [1.83.0](/php/docs/reference/cloud-spanner/1.83.0/V1.Mutation)\n- [1.82.0](/php/docs/reference/cloud-spanner/1.82.0/V1.Mutation)\n- [1.81.0](/php/docs/reference/cloud-spanner/1.81.0/V1.Mutation)\n- [1.80.0](/php/docs/reference/cloud-spanner/1.80.0/V1.Mutation)\n- [1.79.0](/php/docs/reference/cloud-spanner/1.79.0/V1.Mutation)\n- [1.78.0](/php/docs/reference/cloud-spanner/1.78.0/V1.Mutation)\n- [1.77.0](/php/docs/reference/cloud-spanner/1.77.0/V1.Mutation)\n- [1.76.1](/php/docs/reference/cloud-spanner/1.76.1/V1.Mutation)\n- [1.68.0](/php/docs/reference/cloud-spanner/1.68.0/V1.Mutation)\n- [1.67.0](/php/docs/reference/cloud-spanner/1.67.0/V1.Mutation)\n- [1.66.0](/php/docs/reference/cloud-spanner/1.66.0/V1.Mutation)\n- [1.65.0](/php/docs/reference/cloud-spanner/1.65.0/V1.Mutation)\n- [1.64.0](/php/docs/reference/cloud-spanner/1.64.0/V1.Mutation)\n- [1.63.2](/php/docs/reference/cloud-spanner/1.63.2/V1.Mutation)\n- [1.62.1](/php/docs/reference/cloud-spanner/1.62.1/V1.Mutation)\n- [1.61.0](/php/docs/reference/cloud-spanner/1.61.0/V1.Mutation)\n- [1.60.0](/php/docs/reference/cloud-spanner/1.60.0/V1.Mutation)\n- [1.59.0](/php/docs/reference/cloud-spanner/1.59.0/V1.Mutation)\n- [1.58.4](/php/docs/reference/cloud-spanner/1.58.4/V1.Mutation)\n- [1.57.0](/php/docs/reference/cloud-spanner/1.57.0/V1.Mutation)\n- [1.56.0](/php/docs/reference/cloud-spanner/1.56.0/V1.Mutation)\n- [1.55.0](/php/docs/reference/cloud-spanner/1.55.0/V1.Mutation)\n- [1.54.2](/php/docs/reference/cloud-spanner/1.54.2/V1.Mutation) \nReference documentation and code samples for the Cloud Spanner V1 Client class Mutation.\n\nA modification to one or more Cloud Spanner rows. Mutations can be\napplied to a Cloud Spanner database by sending them in a\nCommit call.\n\nGenerated from protobuf message `google.spanner.v1.Mutation`\n\nNamespace\n---------\n\nGoogle \\\\ Cloud \\\\ Spanner \\\\ V1\n\nMethods\n-------\n\n### __construct\n\nConstructor.\n\n### getInsert\n\nInsert new rows in a table. If any of the rows already exist,\nthe write or transaction fails with error `ALREADY_EXISTS`.\n\n### hasInsert\n\n### setInsert\n\nInsert new rows in a table. If any of the rows already exist,\nthe write or transaction fails with error `ALREADY_EXISTS`.\n\n### getUpdate\n\nUpdate existing rows in a table. If any of the rows does not\nalready exist, the transaction fails with error `NOT_FOUND`.\n\n### hasUpdate\n\n### setUpdate\n\nUpdate existing rows in a table. If any of the rows does not\nalready exist, the transaction fails with error `NOT_FOUND`.\n\n### getInsertOrUpdate\n\nLike [insert](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsert__), except that if the row already exists, then\nits column values are overwritten with the ones provided. Any\ncolumn values not explicitly written are preserved.\n\nWhen using [insert_or_update](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsertOrUpdate__), just as when using [insert](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsert__), all `NOT\nNULL` columns in the table must be given a value. This holds true\neven when the row already exists and will therefore actually be updated.\n\n### hasInsertOrUpdate\n\n### setInsertOrUpdate\n\nLike [insert](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsert__), except that if the row already exists, then\nits column values are overwritten with the ones provided. Any\ncolumn values not explicitly written are preserved.\n\nWhen using [insert_or_update](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsertOrUpdate__), just as when using [insert](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsert__), all `NOT\nNULL` columns in the table must be given a value. This holds true\neven when the row already exists and will therefore actually be updated.\n\n### getReplace\n\nLike [insert](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsert__), except that if the row already exists, it is\ndeleted, and the column values provided are inserted\ninstead. Unlike [insert_or_update](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsertOrUpdate__), this means any values not\nexplicitly written become `NULL`.\n\nIn an interleaved table, if you create the child table with the\n`ON DELETE CASCADE` annotation, then replacing a parent row\nalso deletes the child rows. Otherwise, you must delete the\nchild rows before you replace the parent row.\n\n### hasReplace\n\n### setReplace\n\nLike [insert](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsert__), except that if the row already exists, it is\ndeleted, and the column values provided are inserted\ninstead. Unlike [insert_or_update](/php/docs/reference/cloud-spanner/latest/V1.Mutation#_Google_Cloud_Spanner_V1_Mutation__getInsertOrUpdate__), this means any values not\nexplicitly written become `NULL`.\n\nIn an interleaved table, if you create the child table with the\n`ON DELETE CASCADE` annotation, then replacing a parent row\nalso deletes the child rows. Otherwise, you must delete the\nchild rows before you replace the parent row.\n\n### getDelete\n\nDelete rows from a table. Succeeds whether or not the named\nrows were present.\n\n### hasDelete\n\n### setDelete\n\nDelete rows from a table. Succeeds whether or not the named\nrows were present.\n\n### getOperation"]]