sql >> Databáze >  >> RDS >> Mysql

uzamknout tabulku po BeginTransaction MySql Transaction v c#.net

BeginTransaction neznamená, že „vaše transakce začala a vše je uzamčeno“. Pouze informuje RDBMS o vašem záměru zahájit transakci a že vše, co byste od nynějška měli dělat, by mělo a musí být považováno za atomické.

To znamená, že byste mohli zavolat BeingTransaction a já bych mohl smazat všechna data ze všech tabulek ve vaší databázi a RDBMS mi to ochotně umožní. Doufejme, že by mi to nemělo dovolit zahodit DB, protože k němu máte otevřené připojení, ale v dnešní době nikdy nevíte. Mohou existovat některé nezdokumentované funkce, o kterých nevím.

Atomický znamená, že jakákoli akce nebo soubor akcí musí být provedeny jako jedna. Pokud některý z nich selže, selžou všechny. Je to koncept všechno nebo nic.

Vypadá to, že do tabulky vkládáte tři řádky. Pokud je vaše tabulka prázdná nebo má velmi nízký počet řádků, může zamknout celou tabulku v závislosti na pravidlech LOCK ESCALATION vašeho RDBMS. Pokud se však jedná o velkou nebo velmi velkou nebo rozdělenou tabulku, pak pravidla eskalace LOCK nemusí zaručit uzamčení tabulky. Stále tedy může být možné vložit řádky do tabulky více transakcí současně. Vše závisí na tom, jak se s touto situací vypořádá RDBMS a jak je strukturován váš datový model.

Nyní k odpovědi na vaši otázku:

TIP – Hledejte způsob, jak zamknout celou tabulku, než začnete vkládat data.

To však obvykle není dobré, ale předpokládám, že k tomu máte rozumný důvod.

Doufám, že to pomůže.




  1. Výsledky skupiny Concat Cut Off

  2. Migrace z MySQL na PostgreSQL

  3. HAS_DBACCESS() – Zjistěte, zda má uživatel přístup k databázi na serveru SQL Server

  4. Skrytí hesla ve formátu prostého textu pomocí příkazového řádku sqlplus