real 0m0.946s
user 0m0.082s
sys 0m0.064s
real 0m1.111s
user 0m0.069s
sys 0m0.071s
INSERT INTO sequence values('one', 100); | |
INSERT INTO sequence values('two', 1000); | |
SELECT sequence('one'); | |
SELECT sequence('two'); | |
SELECT sequence('one'); | |
SELECT sequence('one'); | |
SELECT sequence('two'); |
CREATE TABLE sequence ( | |
name VARCHAR(20) NOT NULL PRIMARY KEY, | |
value INT unsigned NOT NULL | |
) ENGINE=MyISAM DEFAULT CHARSET=latin1; | |
delimiter // | |
CREATE FUNCTION sequence_update(seq_name VARCHAR(20)) | |
RETURNS INT | |
BEGIN | |
UPDATE sequence SET value=LAST_INSERT_ID(value+1) WHERE name=seq_name; | |
RETURN LAST_INSERT_ID(); | |
END | |
// | |
delimiter ; | |
delimiter // | |
CREATE FUNCTION sequence_insert(seq_name VARCHAR(20)) | |
RETURNS INT | |
BEGIN | |
INSERT INTO sequence (name, value) VALUES (seq_name, LAST_INSERT_ID(1)) | |
ON DUPLICATE KEY UPDATE value=LAST_INSERT_ID(value+1); | |
RETURN LAST_INSERT_ID(); | |
END | |
// | |
delimiter ; |