<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Запросы в транзакции MariaDB выполняются не смотря на ошибки.</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/1018.html</link>
    <description>Доброго времени суток. &lt;br&gt;Уважаемые знатоки, прошу совета!&lt;br&gt;Сервер MariaDB 10.5, пишу простенький запрос с транзакцией где данные копируются из одной таблицы в другую и помечаются как архивные, затем удаляются из первоисточника.&lt;br&gt;Суть в том, что даже работая с одной таблицей, поочерёдно выполняется код и не смотря на то, что есть попытка обновить несуществующую строку, транзакция не отменяется, а выполняется в полном объёме, что до попытки обновления, что после.&lt;br&gt;&lt;br&gt;SET autocommit = OFF;&lt;br&gt;START TRANSACTION;&lt;br&gt;DELETE FROM test2 WHERE pnum=11;/*удаляем на всякий случай*/&lt;br&gt;INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*из test1 копируем строку в test2*/&lt;br&gt;DELETE FROM test2 WHERE pnum=11;/*удаляем копируемую строку*/&lt;br&gt;UPDATE test2 SET location=&apos;arhiv&apos; WHERE pnum=11;/*пытаемся обновить несуществующую строку*/&lt;br&gt;INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*снова вставляем данную строку*/&lt;br&gt;COMMIT;&lt;br&gt;SELECT * FROM test2 WHERE pnum=11;&lt;br&gt;&lt;br&gt;Не могу понять почему транзакция</description>

<item>
    <title>Запросы в транзакции MariaDB выполняются не смотря на ошибки. (Непростое кино)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/1018.html#4</link>
    <pubDate>Tue, 16 Aug 2022 07:37:57 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; COMMIT; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; SELECT * FROM test2 WHERE pnum=11; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Не могу понять почему транзакция не отменяет изменения если в одном из &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; запросов ошибка?&lt;br&gt;&amp;gt;&amp;gt; Я давно работал с SQL, но возникает вопрос, почему Вы &quot;не нахождение &lt;br&gt;&amp;gt;&amp;gt; по WHERE&quot; считаете за ошибку? Это нулевая выборка, которая может вовсе &lt;br&gt;&amp;gt;&amp;gt; и не рассматриваться как ошибка.&lt;br&gt;&amp;gt; А как в таком случае проверяют свои транзакции банки когда добавляют на &lt;br&gt;&amp;gt; один счёт 100р и нужно одновременно списать с другого счёта 100р, &lt;br&gt;&amp;gt; а если первая операция не прошла, то отменить все операции?&lt;br&gt;&lt;br&gt;Ну select into where для проверки и if ом ветвить ты можешь? &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Запросы в транзакции MariaDB выполняются не смотря на ошибки. (Сергей)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/1018.html#3</link>
    <pubDate>Mon, 15 Aug 2022 06:37:24 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; COMMIT; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; SELECT * FROM test2 WHERE pnum=11; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Не могу понять почему транзакция не отменяет изменения если в одном из &lt;br&gt;&amp;gt;&amp;gt;&amp;gt; запросов ошибка?&lt;br&gt;&amp;gt;&amp;gt; Я давно работал с SQL, но возникает вопрос, почему Вы &quot;не нахождение &lt;br&gt;&amp;gt;&amp;gt; по WHERE&quot; считаете за ошибку? Это нулевая выборка, которая может вовсе &lt;br&gt;&amp;gt;&amp;gt; и не рассматриваться как ошибка.&lt;br&gt;&amp;gt; А как в таком случае проверяют свои транзакции банки когда добавляют на &lt;br&gt;&amp;gt; один счёт 100р и нужно одновременно списать с другого счёта 100р, &lt;br&gt;&amp;gt; а если первая операция не прошла, то отменить все операции?&lt;br&gt;&lt;br&gt; А у них не mySQL(MariaDb) юзается, и обычно в транзакции входят и списание и добавление, если что-то не проходит она и откатывается... Т.е. там все начинается с begin transaction&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Запросы в транзакции MariaDB выполняются не смотря на ошибки. (CHIM)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/1018.html#2</link>
    <pubDate>Mon, 15 Aug 2022 05:18:26 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; UPDATE test2 SET location=&apos;arhiv&apos; WHERE pnum=11;/*пытаемся обновить несуществующую строку*/ &lt;br&gt;&amp;gt;&amp;gt; INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*снова вставляем &lt;br&gt;&amp;gt;&amp;gt; данную строку*/ &lt;br&gt;&amp;gt;&amp;gt; COMMIT; &lt;br&gt;&amp;gt;&amp;gt; SELECT * FROM test2 WHERE pnum=11; &lt;br&gt;&amp;gt;&amp;gt; Не могу понять почему транзакция не отменяет изменения если в одном из &lt;br&gt;&amp;gt;&amp;gt; запросов ошибка?&lt;br&gt;&amp;gt; Я давно работал с SQL, но возникает вопрос, почему Вы &quot;не нахождение &lt;br&gt;&amp;gt; по WHERE&quot; считаете за ошибку? Это нулевая выборка, которая может вовсе &lt;br&gt;&amp;gt; и не рассматриваться как ошибка.&lt;br&gt;&lt;br&gt;А как в таком случае проверяют свои транзакции банки когда добавляют на один счёт 100р и нужно одновременно списать с другого счёта 100р, а если первая операция не прошла, то отменить все операции?&lt;br&gt;</description>
</item>

<item>
    <title>Запросы в транзакции MariaDB выполняются не смотря на ошибки. (Аноним)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID13/1018.html#1</link>
    <pubDate>Sun, 14 Aug 2022 03:04:30 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*из test1 копируем &lt;br&gt;&amp;gt; строку в test2*/ &lt;br&gt;&amp;gt; DELETE FROM test2 WHERE pnum=11;/*удаляем копируемую строку*/ &lt;br&gt;&amp;gt; UPDATE test2 SET location=&apos;arhiv&apos; WHERE pnum=11;/*пытаемся обновить несуществующую строку*/ &lt;br&gt;&amp;gt; INSERT INTO test2(fam,pnum) (SELECT fam,pnum FROM test1 WHERE id =334);/*снова вставляем &lt;br&gt;&amp;gt; данную строку*/ &lt;br&gt;&amp;gt; COMMIT; &lt;br&gt;&amp;gt; SELECT * FROM test2 WHERE pnum=11; &lt;br&gt;&amp;gt; Не могу понять почему транзакция не отменяет изменения если в одном из &lt;br&gt;&amp;gt; запросов ошибка?&lt;br&gt;&lt;br&gt;Я давно работал с SQL, но возникает вопрос, почему Вы &quot;не нахождение по WHERE&quot; считаете за ошибку? Это нулевая выборка, которая может вовсе и не рассматриваться как ошибка.&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
