gpt4 book ai didi

mysql - 为什么主键在重复时不递增?

转载 作者:行者123 更新时间:2023-11-29 11:35:33 25 4
gpt4 key购买 nike

我有以下 TEACHER 表,其架构如下:

create table TEACHER
(
TEACHERID int not null auto_increment,
FIRST_NAME varchar(20) not null,
SURNAME varchar(20) not null,
primary key (TEACHERID)
);

我有多个插入内容与老师的名字和姓氏相同,但我希望省略。架构已给出,我不打算修改它。

我尝试在程序中动态执行以下查询,但 TEACHERID 没有递增,实际上没有添加具有新名字和姓氏的新字段,只有一个字段不断更新。

这是我的查询:

INSERT INTO TEACHER set ? ON DUPLICATE KEY UPDATE FirstName = ?, LastName = ?'

?的定义如下:values: [set, Professor.name, Professor.sname ]其中集合定义如下:

set = {
FirstName: professor.name,
LastName: professor.sname
}

如何让主键在每个重复项上递增,而不实际添加该重复项?

谢谢

最佳答案

您之所以出现这种行为,是因为您正在使用ON DUPLICATE KEY UPDATE。如果您确实想插入重复记录,则只需执行 INSERT 语句,例如

INSERT INTO TEACHER VALUES('test','test')

How do I get the primary key to increment on each duplicate, without actually adding that duplicate?

抱歉,至少使用自动增量是不可能的。然后,您必须拥有自己的主键,并在每次插入时通过 before insert 触发器进行一些操作。类似的东西

create table TEACHER
(
TEACHERID int not null primary key,

create trigger trg_binsert
on TEACHER before insert
for each row
begin
if(new.FIRST_NAME = FIRST_NAME and new.SURNAME = SURNAME)
update TEACHER
SET TEACHERID = TEACHERID + 1
WHERE new.FIRST_NAME = FIRST_NAME
and new.SURNAME = SURNAME;
end if
end

不过,不确定您为什么要这样做,也不会推荐。

关于mysql - 为什么主键在重复时不递增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36656467/

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