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

Emulace transakčně bezpečné SEKVENCE v MySQL

Pokud automatický přírůstek není pro vaše potřeby dost dobrý, můžete vytvořit mechanismus atomové sekvence pomocí n pojmenované sekvence takto:

Vytvořte tabulku pro uložení sekvencí:

CREATE TABLE sequence (
  seq_name varchar(20) unique not null,
  seq_current unsigned int not null
);

Za předpokladu, že máte v tabulce řádek pro 'foo', můžete atomicky získat další ID sekvence takto:

UPDATE sequence SET seq_current = (@next := seq_current + 1) WHERE seq_name = 'foo';
SELECT @next;

Nejsou potřeba žádné zámky. Oba příkazy musí být provedeny ve stejné relaci, takže místní proměnná @next je skutečně definována, když dojde k výběru.



  1. Je v Apache Spark 2.0.0 možné načíst dotaz z externí databáze (spíše než uchopit celou tabulku)?

  2. Nastavení a konfigurace replikace SQL Server

  3. SQL Server 2012 dotazování na data aplikace Access 2007 pomocí chyby OPENROWSET

  4. Složený index pro tabulku vztahů