| // Copyright 2017 Google Inc. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto3"; |
| |
| package google.spanner.v1; |
| |
| import "google/api/annotations.proto"; |
| import "google/protobuf/struct.proto"; |
| import "google/spanner/v1/keys.proto"; |
| |
| option csharp_namespace = "Google.Cloud.Spanner.V1"; |
| option go_package = "google.golang.org/genproto/googleapis/spanner/v1;spanner"; |
| option java_multiple_files = true; |
| option java_outer_classname = "MutationProto"; |
| option java_package = "com.google.spanner.v1"; |
| |
| |
| // A modification to one or more Cloud Spanner rows. Mutations can be |
| // applied to a Cloud Spanner database by sending them in a |
| // [Commit][google.spanner.v1.Spanner.Commit] call. |
| message Mutation { |
| // Arguments to [insert][google.spanner.v1.Mutation.insert], [update][google.spanner.v1.Mutation.update], [insert_or_update][google.spanner.v1.Mutation.insert_or_update], and |
| // [replace][google.spanner.v1.Mutation.replace] operations. |
| message Write { |
| // Required. The table whose rows will be written. |
| string table = 1; |
| |
| // The names of the columns in [table][google.spanner.v1.Mutation.Write.table] to be written. |
| // |
| // The list of columns must contain enough columns to allow |
| // Cloud Spanner to derive values for all primary key columns in the |
| // row(s) to be modified. |
| repeated string columns = 2; |
| |
| // The values to be written. `values` can contain more than one |
| // list of values. If it does, then multiple rows are written, one |
| // for each entry in `values`. Each list in `values` must have |
| // exactly as many entries as there are entries in [columns][google.spanner.v1.Mutation.Write.columns] |
| // above. Sending multiple lists is equivalent to sending multiple |
| // `Mutation`s, each containing one `values` entry and repeating |
| // [table][google.spanner.v1.Mutation.Write.table] and [columns][google.spanner.v1.Mutation.Write.columns]. Individual values in each list are |
| // encoded as described [here][google.spanner.v1.TypeCode]. |
| repeated google.protobuf.ListValue values = 3; |
| } |
| |
| // Arguments to [delete][google.spanner.v1.Mutation.delete] operations. |
| message Delete { |
| // Required. The table whose rows will be deleted. |
| string table = 1; |
| |
| // Required. The primary keys of the rows within [table][google.spanner.v1.Mutation.Delete.table] to delete. |
| KeySet key_set = 2; |
| } |
| |
| // Required. The operation to perform. |
| oneof operation { |
| // Insert new rows in a table. If any of the rows already exist, |
| // the write or transaction fails with error `ALREADY_EXISTS`. |
| Write insert = 1; |
| |
| // Update existing rows in a table. If any of the rows does not |
| // already exist, the transaction fails with error `NOT_FOUND`. |
| Write update = 2; |
| |
| // Like [insert][google.spanner.v1.Mutation.insert], 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. |
| Write insert_or_update = 3; |
| |
| // Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, it is |
| // deleted, and the column values provided are inserted |
| // instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not |
| // explicitly written become `NULL`. |
| Write replace = 4; |
| |
| // Delete rows from a table. Succeeds whether or not the named |
| // rows were present. |
| Delete delete = 5; |
| } |
| } |