SEQUENCEs were introduced in MariaDB 10.3.
PREVIOUS VALUE FOR sequence_name
or
LASTVAL(sequence_name)
or in Oracle mode (SQL_MODE=ORACLE)
sequence_name.currval
PREVIOUS VALUE FOR is IBM DB2 syntax while LASTVAL() is PostgreSQL syntax.
Get last value in the current connection generated from a sequence.
PREVIOUS VALUE FOR returns NULL (the same thing applies with a new connection which doesn't see a last value for an existing sequence). SEQUENCE has been dropped and re-created then it's treated as a new SEQUENCE and PREVIOUS VALUE FOR will return NULL. FLUSH TABLES has no effect on PREVIOUS VALUE FOR. PREVIOUS VALUE FOR requires the SELECT privilege. CREATE SEQUENCE s START WITH 100 INCREMENT BY 10; SELECT PREVIOUS VALUE FOR s; +----------------------+ | PREVIOUS VALUE FOR s | +----------------------+ | NULL | +----------------------+ # The function works for sequences only, if the table is used an error is generated SELECT PREVIOUS VALUE FOR t; ERROR 4089 (42S02): 'test.t' is not a SEQUENCE # Call the NEXT VALUE FOR s: SELECT NEXT VALUE FOR s; +------------------+ | NEXT VALUE FOR s | +------------------+ | 100 | +------------------+ SELECT PREVIOUS VALUE FOR s; +----------------------+ | PREVIOUS VALUE FOR s | +----------------------+ | 100 | +----------------------+
Now try to start the new connection and check that the last value is still NULL, before updating the value in the new connection after the output of the new connection gets current value (110 in the example below). Note that first connection cannot see this change and the result of last value still remains the same (100 in the example above).
$ .mysql -uroot test -e"SELECT PREVIOUS VALUE FOR s; SELECT NEXT VALUE FOR s; SELECT PREVIOUS VALUE FOR s;" +----------------------+ | PREVIOUS VALUE FOR s | +----------------------+ | NULL | +----------------------+ +------------------+ | NEXT VALUE FOR s | +------------------+ | 110 | +------------------+ +----------------------+ | PREVIOUS VALUE FOR s | +----------------------+ | 110 | +----------------------+
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/previous-value-for-sequence_name/