作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在MySQL中创建唯一序列号?
场景是这样的,在 table1
中,数据 say "A"
in row1 可以出现不止一次。
所以当它第一次出现时,一个序列号将被分配给它,并且每次它再次出现时都会被分配给它。
但是数据“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。
关于mysql - 如何在mysql中创建唯一序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15935467/
我是一名优秀的程序员,十分优秀!