Skip to main content
Version: 5.15.0

UpdateData

public BackendReturnObject UpdateMyLatestData(string tableName, Param param)
public BackendReturnObject UpdateMyData(string tableName, string inDate, Param param)
public BackendReturnObject UpdateOtherData(string tableName, string inDate, string owner_inDate, Param param)

Parameters

ValueTypeDescription
tableNamestringName of table to be updated
inDatestringinDate value of the row to be updated
owner_inDatestringinDate of the user who owns the row
paramParamInformation to be updated

Description

UpdateMyLatestData method modifies a piece of my data that has been registered most recently in the table.
UpdateMyData method modifies a piece of my data in the table identical to inDate.
UpdateOtherData method modifies a piece of my data in the table identical to inDate and owner_inDate. (If public, the data of others can also be modified.)

  • The data can be modified regardless of schema definition status.
  • You can only modify your own public/private data.
  • You can modify the public data of others.
  • You cannot modify the private data of others.
  • For numerical data, you can safely input numbers up to 9,007,199,254,740,991 (approximately 9 quadrillion).
    When your input data exceeds the limit above, place values in units and tens are rounded down to 0.
    As the number increases and place values expand, small numbers are rounded down, and large numbers are maintained up to 16 - 18 digits, based on the left.

    For 'long', the data is saved as shown below:

12345678912345678 -> 12345678912345678(within the limit of 9 quadrillion, the input number is maintained)
123456789123456789 -> 123456789123456780(exceeds the limit of 9 quadrillion, the last digit is rounded down)
1234567891234567891 -> 1234567891234568000
9223372036854775807 -> 9223372036854776000(the maximum value for 'long')

When saving an integer with double to save a larger piece of data, the number is displayed as shown below:

12345678912345678912 -> 12345678912345678000('double' is larger than the maximum value of 'long')
123456789123456789123.0 -> 123456789123456800000
1234567891234567891234.0 -> 123456789123456800000000
1.23456789123457E+29 -> 123456789123457000000000000000

In the case of receiving the number from the client (C#), it may be changed to an exponent format.
12345678912345678000 -> 1.23456789123457E+19

When only some of the columns in the row exist in param, only those columns are modified.

  • Columns not in the param will not be modified.

When there are columns that do not exist in a row of the param, they will undergo the following process:

  • For a table whose schema is not defined, if a column that does not exist in the row is updated, a new column is added.
  • For a table whose schema is defined, if a column whose schema is not declared is updated, an error occurs.

Reserved column

When saving, eight fields, including partition, gamer_id, inDate, updatedAt, sender, receiver, reservationDate, owner_inDate, client_date, are used by the server.
When these columns are included in the param, an error occurs.

ValueDescriptionWhether the value is displayed in BACKND Console
partitionValue used by the server to classify a tableX
gamer_idGamer ID of the row ownerO
inDateinDate of the row (key value)O
updatedAtTime the table was last modifiedO
senderValue used internally for BACKND function (e.g., mail)X
receiverValue used internally for BACKND function (e.g., mail)X
reservationDateValue used internally for BACKND function (e.g., mail)X
owner_inDateUser inDate of the row ownerO
client_dateThe time when the client first requested data creationO

In the case of old version tables' rows without the owner_inDate, an owner_inDate column is added when the rows are updated by using the corresponding method.

Example

Synchronous

Param param = new Param();
param.Add("gold", 100);
param.Add("level", 2);

// Modify my data that has been registered most recently in the table
Backend.PlayerData.UpdateMyLatestData("tableName", param);

// Modify my data in the table that is identical to inDate
Backend.PlayerData.UpdateMyData("tableName", "2023-10-25:11:34:24.124Z", param);

// Modify data in the table identical to inDate and owner_inDate (data of others can also be modified)

Backend.PlayerData.UpdateOtherData("tableName", "2023-10-25:11:34:24.124Z", "2023-10-22:09:14:35.616Z", param);

Asynchronous

Param param = new Param();
param.Add("gold", 100);
param.Add("level", 2);

// Modify my data that has been registered most recently in the table
Backend.PlayerData.UpdateMyLatestData("tableName", param, (callback) =>
{
// Post-process
});

// Modify data in the table that is identical to inDate
Backend.PlayerData.UpdateMyData("tableName", "2023-10-25:11:34:24.124Z", param, (callback) =>
{
// Post-process
});

// Modify data in the table identical to inDate and owner_inDate (data of others can also be modified)
Backend.PlayerData.UpdateOtherData("tableName", "2023-10-25:11:34:24.124Z", "2023-10-22:09:14:35.616Z", param, (callback) =>
{
// Post-process
});

SendQueue

Param param = new Param();
param.Add("gold", 100);
param.Add("level", 2);

// Modify my data that has been registered most recently in the table
SendQueue.Enqueue(Backend.PlayerData.UpdateMyLatestData, "tableName", param, (callback) =>
{
// Post-process
});

// Modify data in the table that is identical to inDate
SendQueue.Enqueue(Backend.PlayerData.UpdateMyData, "tableName", "2023-10-25:11:34:24.124Z", param, (callback) =>
{
// Post-process
});

// Modify data in the table identical to inDate and owner_inDate (data of others can also be modified)
SendQueue.Enqueue(BackendBackend.PlayerData.UpdateOtherData, "tableName", "2023-10-25:11:34:24.124Z", "2023-10-22:09:14:35.616Z", param, (callback) =>
{
// Post-process
});

ReturnCase

Success cases

When the modification is successful
statusCode : 200 message : Success returnValue : {"ConsumedCapacity":{"Read":{"CapacityUnits":6},"Write":{"CapacityUnits":4}}}

Error cases

(Schema) When a column whose schema is not defined is included in param
statusCode : 400
errorCode : BadParameterException
message : bad column does not exist., The invalid column does not exist.

(Schema) When the data type of the column declared upon defining the schema is different from that of the column to be updated
statusCode : 400
errorCode : BadParameterException
message : bad {column name} dataType, Invalid {column name} dataType

(Schema) When the size of the list selected upon declaring the list column in the schema is different from the size of the list entered in param
statusCode : 400
errorCode : BadParameterException
message : bad column data length, The max length of the {set list column} is {max length}, Invalid column data length, The max length of the {set list column} is {max length}

bad column data length, listData's max length is 20, Invalid column data length, listData's max length is 20

(Schema) When the size of the map selected upon declaring the map column in the schema is different from the size of the map entered in param
statusCode : 400
errorCode : BadParameterException
message : bad column data length, The max length of the {set list column} is {max length}, Invalid column data length, The max length of the {set list column} is {max length}

bad column data length, dicData's max length is 3, Invalid column data length, dicData's max length is 3

When the total number of columns to be calculated is over 290
statusCode : 400
errorCode : ValidationException
message : Invalid UpdateExpression: Expression size has exceeded the maximum allowed size;

When the total number of columns to be modified is over 290
statusCode : 400
errorCode : ValidationException
message : Invalid UpdateExpression: Expression size has exceeded the maximum allowed size;

When the user tries to modify other people's information in a private table
statusCode : 403
errorCode : ForbiddenException
message : Forbidden Private table can only be modified by the owner, Private table can only be modified by the owner

When the tableName does not exist
statusCode : 404
errorCode : NotFoundException
message : table not found, table cannot be found

When the inDate does not exist
statusCode : 404
errorCode : NotFoundException
message : gameInfo not found, gameInfo cannot be found

When the eight fields (partition, gamer_id, inDate, updatedAt, sender, receiver, reservationDate, and owner_inDate) are included in param
statusCode : 405
errorCode : MethodNotAllowedParameterException
message : MethodNotAllowed {param value}, Unavailable {param value}

When there is an attempt to modify an inactive table
statusCode : 412
errorCode : PreconditionFailed
message : inactiveTable prerequisites are not met.

When the size of data to be updated exceeds 400 KB
statusCode : 413
errorCode : ServerErrorException
message : request entity too large