我正在尝试使用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.
有什么想法解决这类错误吗?任何替代方法或建议?
答案 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;