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

Jak vytvořím sekvenci v MySQL?

Toto je řešení navrhované MySQl manuál :

Pokud je výraz zadán jako argument funkce LAST_INSERT_ID(), funkce vrátí hodnotu argumentu a zapamatuje si ji jako další hodnotu, kterou vrátí funkce LAST_INSERT_ID(). Toto lze použít k simulaci sekvencí:

Vytvořte tabulku, která bude obsahovat čítač sekvencí, a inicializujte jej:

    mysql> CREATE TABLE sequence (id INT NOT NULL);
    mysql> INSERT INTO sequence VALUES (0);

Pomocí tabulky vygenerujte sekvenční čísla takto:

    mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
    mysql> SELECT LAST_INSERT_ID();

Příkaz UPDATE zvýší čítač sekvence a způsobí, že další volání LAST_INSERT_ID() vrátí aktualizovanou hodnotu. Příkaz SELECT tuto hodnotu načte. K získání hodnoty lze také použít funkci mysql_insert_id() C API. Viz oddíl 23.8.7.37 „mysql_insert_id()“.

Sekvence můžete generovat bez volání LAST_INSERT_ID(), ale užitečnost použití funkce tímto způsobem spočívá v tom, že hodnota ID je na serveru udržována jako poslední automaticky vygenerovaná hodnota. Je bezpečný pro více uživatelů, protože více klientů může zadat příkaz UPDATE a získat svou vlastní sekvenční hodnotu pomocí příkazu SELECT (nebo mysql_insert_id()), aniž by to ovlivnilo nebo bylo ovlivněno ostatními klienty, kteří generují své vlastní sekvenční hodnoty.



  1. Funkce MySQL TAN() – Vrátí tečnu hodnoty v MySQL

  2. Jak odebrat datový soubor z databáze SQL Server (T-SQL)

  3. Porovnání cloudových virtuálních strojů se spravovanou cloudovou databází

  4. Jak vypustit tabulku v SQL