我正在尝试在 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.
有解决此类错误的想法吗?有什么替代方法或建议吗?
使用触发器来满足您的要求,因为生成的列不能引用自动增量列。这是执行此类任务的一个不错的选择。下面是插入触发器,我认为你还必须创建
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;