1

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

情况是这样的,在 row1 中table1的数据"A"中可以出现不止一次。

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

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

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

寻找一个存储过程来实现这一点。希望我清楚我的问题。

4

1 回答 1

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。

于 2013-04-11T00:00:31.500 回答