错误"生成的列不能引用自动增量列"在MySQL表

时间:2017-12-05 08:17:27

标签: mysql sql database

我正在尝试使用id作为bigint not null auto_increment在MySQL中创建一个表。这是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.

有什么想法解决这类错误吗?任何替代方法或建议?

1 个答案:

答案 0 :(得分:0)

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