如何在 MySQL 中创建唯一的序列号?
情况是这样的,在 row1 中table1
的数据"A"
中可以出现不止一次。
因此,当它第一次出现时,将为其分配一个序列号,并且每次再次出现时都会为其分配相同的序列号。
但是数据"B"
(比如输入的下一个数据)将具有下一个序列号。
所以我不能在这种情况下使用 auto_increment。说,我必须检查这个唯一序列号的条件 c1 和 c2。
寻找一个存储过程来实现这一点。希望我清楚我的问题。
如何在 MySQL 中创建唯一的序列号?
情况是这样的,在 row1 中table1
的数据"A"
中可以出现不止一次。
因此,当它第一次出现时,将为其分配一个序列号,并且每次再次出现时都会为其分配相同的序列号。
但是数据"B"
(比如输入的下一个数据)将具有下一个序列号。
所以我不能在这种情况下使用 auto_increment。说,我必须检查这个唯一序列号的条件 c1 和 c2。
寻找一个存储过程来实现这一点。希望我清楚我的问题。
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。