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