gpt4 book ai didi

Mysql使用一个特定的主键自动增加一列

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:22 24 4
gpt4 key购买 nike

假设我有一个包含以下方案的表:(注意 zip 栏)

-- UserID  -- Post Id  -- Post Number*

-- 4 -- 85 -- 1
-- 4 -- 86 -- 2
....
-- 5 -- 9362 -- 1
-- 4 -- 9363 -- 3

有没有一种方法可以独立于所有其他条目自动递增列,并且只尊重具有相同主键的列?如果是这样,有人会如何实现?

非常感谢。

最佳答案

为了实现您要查找的内容,您必须使用 triggers .没有其他直接方法可以完成此任务(我猜)。

我确实尝试了一个快速演示:

Create Table SoQuestion (
UserId int,
PostId int,
PostNumber int null
);

CREATE TRIGGER inc_post_num
BEFORE INSERT ON SoQuestion
FOR EACH ROW
set New.PostNumber = (select num
From (select count(*) as num
from SoQuestion
where UserId = New.UserId) as b)
+ 1;


insert into SoQuestion (UserId, PostId) Values (1,1);
insert into SoQuestion (UserId, PostId) Values (1,10);
insert into SoQuestion (UserId, PostId) Values (1,20);
insert into SoQuestion (UserId, PostId) Values (2,1);
insert into SoQuestion (UserId, PostId) Values (2,10);
insert into SoQuestion (UserId, PostId) Values (3,1);
insert into SoQuestion (UserId, PostId) Values (4,1);

select * FROM SoQuestion;

这是我得到的输出:

UserId | PostId | PostNumber |
==============================
1 | 1 | 1 |
1 | 10 | 2 |
1 | 20 | 3 |
2 | 1 | 1 |
2 | 10 | 2 |
3 | 1 | 1 |
4 | 1 | 1 |

这是 demo .


通过 Auto_Increment 之后文档,我找到了另一种无需使用触发器即可实现此目的的方法。这个想法是关于创建一个 Auto_Increment 列并将其与另一列一起添加为 PRIMARY KEY。在我们的例子中,它将是 UserIdAUTO_INCREMENT 将是 PostNumber 并且它们都构成了主键。是这样的:

Create Table SoQuestion (
UserId int,
PostId int,
PostNumber int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (UserId, PostNumber)
);

insert into SoQuestion (UserId, PostId) Values (1,1);
insert into SoQuestion (UserId, PostId) Values (1,10);
insert into SoQuestion (UserId, PostId) Values (1,20);
insert into SoQuestion (UserId, PostId) Values (2,1);
insert into SoQuestion (UserId, PostId) Values (2,10);
insert into SoQuestion (UserId, PostId) Values (3,1);
insert into SoQuestion (UserId, PostId) Values (4,1);

select * FROM SoQuestion;

这将为我们提供与第一种方式相同的输出:

UserId | PostId | PostNumber |
==============================
1 | 1 | 1 |
1 | 10 | 2 |
1 | 20 | 3 |
2 | 1 | 1 |
2 | 10 | 2 |
3 | 1 | 1 |
4 | 1 | 1 |

这是 demo第二种方式。

关于Mysql使用一个特定的主键自动增加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48711672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com