MySQL 表中出现“生成的列无法引用自增列”错误

问题描述 投票:0回答:1

我正在尝试在 MySQL 中创建一个表,其中

id
bigint not null auto_increment
。这是MySQL表的结构

create table test_profile (
  id bigint not null auto_increment,
  type integer not null,
  type2 integer generated always as (case when type = 0 then id else type end),
  primary key (id),
  constraint fk_profile_to foreign key(test_profile_1) references test_profile_1(id) on delete cascade
);

我在MySQL工作台上运行了这个表,我收到以下错误

Error Code: 3109. Generated column 'type2' cannot refer to auto-increment column.

有解决此类错误的想法吗?有什么替代方法或建议吗?

sql mysql
1个回答
1
投票

使用触发器来满足您的要求,因为生成的列不能引用自动增量列。这是执行此类任务的一个不错的选择。下面是插入触发器,我认为你还必须创建

AFTER UPDATE
触发器

DELIMITER $$
CREATE TRIGGER TRGUpdateTestProfile
    AFTER INSERT ON test_profile
    FOR EACH ROW 
BEGIN  
    UPDATE test_profile SET Type2 = case when type = 0 then new.id else new.type end 
    WHERE id = new.id;
END$$
DELIMITER;
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.