如何在mysql中创建唯一的序列

时间:2013-04-10 20:10:31

标签: mysql stored-procedures insert sequence

如何在MySQL中创建唯一的序列号?

情况就是这样,在table1中,第1行中的数据"A"可能会出现多次。

因此,当它首次出现时,将为其分配序列号,并且每次再次出现时都会为其分配相同的序列。

但是数据"B"(比如输入的下一个数据)将具有下一个序列号。

所以我不能在这种情况下使用auto_increment。比如,我必须检查条件c1和c2这个唯一序列号

寻找实现此目的的存储过程。希望我对我的问题很清楚。

1 个答案:

答案 0 :(得分:4)

CREATE TABLE `seq` (
    `n` BIGINT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`n`)
);

DELIMITER $$

DROP PROCEDURE IF EXISTS getseq$$

CREATE FUNCTION getseq() RETURN BIGINT
BEGIN
DECLARE r BIGINT;
    INSERT INTO `seq` (`n`) VALUES (NULL);
    SELECT MAX(`n`) INTO r FROM `seq`;
    COMMIT;
    RETURN r;
END$$

DELIMITER ;

应该修改并发事务,但我认为它会起作用,因为实际上自动增量的标记是在事务之间共享的,而不是由您在表中插入的结果所产生的id。