Aggiornare i dati del grafico con DML
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Aggiorna i dati in un grafico Spanner utilizzando DML.
Per saperne di più
Per la documentazione dettagliata che include questo esempio di codice, vedi quanto segue:
Esempio di codice
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],[],[],[],null,["# Update graph data with DML\n\nUpdate data in a Spanner Graph using DML.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Insert, update, or delete Spanner Graph data](/spanner/docs/graph/insert-update-delete-data)\n\nCode sample\n-----------\n\n### C++\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n void UpdateDataWithDml(google::cloud::spanner::Client client) {\n using ::google::cloud::StatusOr;\n namespace spanner = ::google::cloud::spanner;\n\n auto commit_result = client.Commit(\n [&client](spanner::Transaction txn) -\u003e StatusOr\u003cspanner::Mutations\u003e {\n auto update = client.ExecuteDml(\n std::move(txn),\n spanner::SqlStatement(\n \"UPDATE Account SET is_blocked = false WHERE id = 2\"));\n if (!update) return std::move(update).status();\n return spanner::Mutations{};\n });\n if (!commit_result) throw std::move(commit_result).status();\n\n commit_result = client.Commit(\n [&client](spanner::Transaction txn) -\u003e StatusOr\u003cspanner::Mutations\u003e {\n auto update =\n client.ExecuteDml(std::move(txn), spanner::SqlStatement(R\"\"\"(\n UPDATE AccountTransferAccount\n SET amount = 300 WHERE id = 1 AND to_id = 2)\"\"\"));\n if (!update) return std::move(update).status();\n return spanner::Mutations{};\n });\n if (!commit_result) throw std::move(commit_result).status();\n\n std::cout \u003c\u003c \"Update was successful [spanner_update_graph_data_with_dml]\\n\";\n }\n\n### Go\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n\n import (\n \t\"context\"\n \t\"fmt\"\n \t\"io\"\n\n \t\"cloud.google.com/go/spanner\"\n )\n\n func updateGraphDataWithDml(w io.Writer, db string) error {\n \tctx := context.Background()\n \tclient, err := spanner.NewClient(ctx, db)\n \tif err != nil {\n \t\treturn err\n \t}\n \tdefer client.Close()\n\n \t// Execute a ReadWriteTransaction to update the 'Account' table underpinning\n \t// 'Account' nodes in 'FinGraph'. The function run by ReadWriteTransaction\n \t// executes an 'UPDATE' SQL DML statement. Graph queries run after this\n \t// transaction is committed will observe the effects of the update to 'Account'\n \t// with 'id' = 2.\n \t_, err1 := client.ReadWriteTransaction(ctx, func(ctx context.Context, txn *spanner.ReadWriteTransaction) error {\n \t\tstmt := spanner.https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/index.html#cloud_google_com_go_spanner_Statement{\n \t\t\tSQL: `UPDATE Account SET is_blocked = false WHERE id = 2`,\n \t\t}\n \t\trowCount, err := txn.Update(ctx, stmt)\n \t\tif err != nil {\n \t\t\treturn err\n \t\t}\n \t\tfmt.Fprintf(w, \"%d Account record(s) updated.\\n\", rowCount)\n \t\treturn err\n \t})\n\n \tif err1 != nil {\n \t\treturn err1\n \t}\n\n \t// Execute a ReadWriteTransaction to update the 'AccountTransferAccount' table\n \t// underpinning 'AccountTransferAccount' edges in 'FinGraph'. The function run\n \t// by ReadWriteTransaction executes an 'UPDATE' SQL DML statement.\n \t// Graph queries run after this transaction is committed will observe the effects\n \t// of the update to 'AccountTransferAccount' where the source of the transfer has\n \t// 'id' 1 and the destination has 'id' 2.\n \t_, err2 := client.ReadWriteTransaction(ctx, func(ctx context.Context, txn *spanner.ReadWriteTransaction) error {\n \t\tstmt := spanner.https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/index.html#cloud_google_com_go_spanner_Statement{\n \t\t\tSQL: `UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2`,\n \t\t}\n \t\trowCount, err := txn.Update(ctx, stmt)\n \t\tif err != nil {\n \t\t\treturn err\n \t\t}\n \t\tfmt.Fprintf(w, \"%d AccountTransferAccount record(s) updated.\\n\", rowCount)\n \t\treturn err\n \t})\n\n \treturn err2\n }\n\n### Java\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n static void updateUsingDml(DatabaseClient dbClient) {\n dbClient\n .readWriteTransaction()\n .run(\n transaction -\u003e {\n String sql = \"UPDATE Account SET is_blocked = false WHERE id = 2\";\n long rowCount = transaction.executeUpdate(Statement.of(sql));\n System.out.printf(\"%d Account record(s) updated.\\n\", rowCount);\n return null;\n });\n\n dbClient\n .readWriteTransaction()\n .run(\n transaction -\u003e {\n String sql =\n \"UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2\";\n long rowCount = transaction.executeUpdate(Statement.of(sql));\n System.out.printf(\"%d AccountTransferAccount record(s) updated.\\n\", rowCount);\n return null;\n });\n }\n\n### Python\n\n\nTo learn how to install and use the client library for Spanner, see\n[Spanner client libraries](/spanner/docs/reference/libraries).\n\n\nTo authenticate to Spanner, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n def update_data_with_dml(instance_id, database_id):\n \"\"\"Updates sample data from the database using a DML statement.\"\"\"\n\n spanner_client = spanner.Client()\n instance = spanner_client.instance(instance_id)\n database = instance.database(database_id)\n\n def update_accounts(transaction):\n row_ct = transaction.execute_update(\n \"UPDATE Account SET is_blocked = false WHERE id = 2\"\n )\n\n print(\"{} Account record(s) updated.\".format(row_ct))\n\n def update_transfers(transaction):\n row_ct = transaction.execute_update(\n \"UPDATE AccountTransferAccount SET amount = 300 WHERE id = 1 AND to_id = 2\"\n )\n\n print(\"{} AccountTransferAccount record(s) updated.\".format(row_ct))\n\n database.run_in_transaction(update_accounts)\n database.run_in_transaction(update_transfers)\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=spanner)."]]