{"id":4384,"date":"2023-04-18T10:07:36","date_gmt":"2023-04-18T09:07:36","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/optimistic-saving-of-data"},"modified":"2023-04-18T20:28:24","modified_gmt":"2023-04-18T19:28:24","slug":"economia-otimista-de-dados","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados","title":{"rendered":"Salvando os dados de forma otimista"},"content":{"rendered":"<p data-pm-slice=\"1 1 []\">Quem salvar por \u00faltimo, ganhou. \u00c9 assim que funciona a maioria das aplica\u00e7\u00f5es de banco de dados. E tamb\u00e9m \u00e9 assim que o <strong>Firedac<\/strong> \u00e9 configurado por padr\u00e3o. Ele n\u00e3o verifica se os dados mudaram nesse \u00ednterim. Em muitas aplica\u00e7\u00f5es de banco de dados, nada \u00e9 feito com isso. \u00c0s vezes voc\u00ea se depara com aplica\u00e7\u00f5es com um sistema elaborado e personalizado para resolver este problema. Mas o Firedac tem uma op\u00e7\u00e3o com a qual voc\u00ea pode facilmente evitar isto, ou seja, <strong>UpdateMode<\/strong> nas Op\u00e7\u00f5es de Atualiza\u00e7\u00e3o.<\/p>\n<p>H\u00e1 tr\u00eas configura\u00e7\u00f5es poss\u00edveis que resolvem este problema atrav\u00e9s da cl\u00e1usula WHERE da consulta de atualiza\u00e7\u00e3o.<\/p>\n<ul class=\"ak-ul\">\n<li><em>upWhereKeyOnly<\/em>: somente os campos chave prim\u00e1rios s\u00e3o usados no WHERE. Esta \u00e9 a configura\u00e7\u00e3o padr\u00e3o. Como resultado, o \u00faltimo commit sempre sobregrava os dados do commit anterior com dados potencialmente obsoletos.<\/li>\n<li><em>upWhereChanged<\/em>: os campos alterados s\u00e3o adicionados \u00e0 consulta como uma condi\u00e7\u00e3o, juntamente com os campos-chave prim\u00e1rios. Desta forma, a atualiza\u00e7\u00e3o s\u00f3 ter\u00e1 sucesso se os campos modificados no banco de dados ainda contiverem o valor original.<\/li>\n<li><em>upWhereAll<\/em>: todos os campos do registro s\u00e3o colocados no WHERE com seu valor original. Isto significa que a atualiza\u00e7\u00e3o s\u00f3 ter\u00e1 sucesso se nenhum dos campos tiver sido modificado no banco de dados. Esta \u00e9 a forma mais restritiva.<\/li>\n<\/ul>\n<p>Se um update falhar, Firedac levanta uma EFDException. O tratamento disto fica, no entanto, a seu crit\u00e9rio. No entanto, ele evita facilmente que os dados sejam sobregravados &#8211; para surpresa dos usu\u00e1rios.<\/p>\n<p>Naturalmente, voc\u00ea tamb\u00e9m pode resolver este problema com o travamento, embora haja diferen\u00e7as. Com o travamento, voc\u00ea depende do que um banco de dados suporta nisto. A desvantagem do travamento tamb\u00e9m \u00e9 que ningu\u00e9m mais pode escrever na tabela ou registrar, desde que voc\u00ea o tenha travado. E, dependendo de suas configura\u00e7\u00f5es, nem mesmo l\u00ea-lo. Isto muitas vezes proporciona situa\u00e7\u00f5es em que os usu\u00e1rios t\u00eam uma m\u00e1 experi\u00eancia de desempenho, porque as consultas est\u00e3o esperando que os registros sejam liberados.<\/p>\n<p>Com o <strong>UpdateOptions.UpdateMode<\/strong>, isto pode ser tratado de uma maneira relativamente simples em uma aplica\u00e7\u00e3o existente. Se voc\u00ea definir a op\u00e7\u00e3o no n\u00edvel de conex\u00e3o, ela se aplica a todos os comandos por padr\u00e3o, mas voc\u00ea tamb\u00e9m pode come\u00e7ar a definir isto por consulta ou tabela. Isto tamb\u00e9m permite uma abordagem gradual.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4377 alignleft\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png\" alt=\"\" width=\"494\" height=\"552\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png 494w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window-268x300.png 268w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4374 alignleft\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/Firedac-exception.png\" alt=\"\" width=\"588\" height=\"170\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/Firedac-exception.png 588w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/Firedac-exception-300x87.png 300w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-4384","knowledge","type-knowledge","status-publish","hentry","knowledge-category-arquivo-delphi"],"acf":{"author":1384,"type_hero":"compact","hero_image":4377,"hero_image_position":"","hero_title":"Salvando os dados de forma otimista ","hero_content":"","hero_link":null,"hero_show_h1":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Salvando os dados de forma otimista - GDK Software<\/title>\n<meta name=\"description\" content=\"Um sistema elaborado e personalizado para resolver este problema. Quem salvar por \u00faltimo, ganhou.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Salvando os dados de forma otimista\" \/>\n<meta property=\"og:description\" content=\"Um sistema elaborado e personalizado para resolver este problema. Quem salvar por \u00faltimo, ganhou.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-18T19:28:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados\",\"name\":\"Salvando os dados de forma otimista - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/FireDac-connection-window.png\",\"datePublished\":\"2023-04-18T09:07:36+00:00\",\"dateModified\":\"2023-04-18T19:28:24+00:00\",\"description\":\"Um sistema elaborado e personalizado para resolver este problema. Quem salvar por \u00faltimo, ganhou.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados#primaryimage\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/FireDac-connection-window.png\",\"contentUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/FireDac-connection-window.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/economia-otimista-de-dados#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledgebase\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delphi\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/knowledgebase-category\\\/arquivo-delphi\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Salvando os dados de forma otimista\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\",\"name\":\"GDK Software\",\"description\":\"Zet de stip op je horizon\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Salvando os dados de forma otimista - GDK Software","description":"Um sistema elaborado e personalizado para resolver este problema. Quem salvar por \u00faltimo, ganhou.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados","og_locale":"pt_BR","og_type":"article","og_title":"Salvando os dados de forma otimista","og_description":"Um sistema elaborado e personalizado para resolver este problema. Quem salvar por \u00faltimo, ganhou.","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados","og_site_name":"GDK Software","article_modified_time":"2023-04-18T19:28:24+00:00","og_image":[{"url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados","name":"Salvando os dados de forma otimista - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"primaryImageOfPage":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados#primaryimage"},"image":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados#primaryimage"},"thumbnailUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png","datePublished":"2023-04-18T09:07:36+00:00","dateModified":"2023-04-18T19:28:24+00:00","description":"Um sistema elaborado e personalizado para resolver este problema. Quem salvar por \u00faltimo, ganhou.","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados#primaryimage","url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png","contentUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2023\/04\/FireDac-connection-window.png"},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/economia-otimista-de-dados#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gdksoftware.com\/pt-br"},{"@type":"ListItem","position":2,"name":"Knowledgebase","item":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento"},{"@type":"ListItem","position":3,"name":"Delphi","item":"https:\/\/gdksoftware.com\/pt-br\/knowledgebase-category\/arquivo-delphi"},{"@type":"ListItem","position":4,"name":"Salvando os dados de forma otimista"}]},{"@type":"WebSite","@id":"https:\/\/gdksoftware.com\/pt-br#website","url":"https:\/\/gdksoftware.com\/pt-br","name":"GDK Software","description":"Zet de stip op je horizon","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gdksoftware.com\/pt-br?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge\/4384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/types\/knowledge"}],"acf:post":[{"embeddable":true,"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/team\/1384"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/media?parent=4384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}