使用case语句在mariadb中创建虚拟列失败

使用case语句在mariadb中创建虚拟列失败,mariadb,Mariadb,我正试图在MariaDB中创建一个带有虚拟列的表,虚拟列由case语句定义 这就是我所拥有的 create table Foto ( ID int AUTO_INCREMENT not null primary key, LigPlaatsCode varchar(10) not null, FotoTypeID int not null check (FotoType in (0, 1, 2, 3)), Foto varchar(1000) not null, FotoTy

我正试图
在MariaDB
中创建一个带有
虚拟列的表,虚拟列由
case
语句定义

这就是我所拥有的

create table Foto (
  ID int AUTO_INCREMENT not null primary key,
  LigPlaatsCode varchar(10) not null,
  FotoTypeID int not null check (FotoType in (0, 1, 2, 3)),
  Foto varchar(1000) not null,
  FotoType varchar(50) as
    case FotoTypeID 
         when 0 then 'Bidprent'
         when 1 then 'Krantartikel'
         when 2 then 'Persoon'
         else 'Graf'
    end,     `

  constraint FK_Foto_LigPlaats foreign key (LigPlaatsCode) references LigPlaats (LigPlaatsCode) 
)
然而,它总是给我这个错误

#42000您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,了解要使用的正确语法
近'案例FotoTypeID
当为0时,则为“Bidprent”
当1然后在第7行“Krantar”时

当我在谷歌上搜索如何创建虚拟专栏和案例时,我发现的链接似乎表明我做对了,但显然我没有。所以我错过了一些东西。
这个CREATETABLE语句有什么问题

编辑

我的版本是
10.3.21-MariaDB

生成的列需要使用parantehese-around-case表达式:

create table Foto (
  ID int AUTO_INCREMENT not null primary key,
  LigPlaatsCode varchar(10) not null,
  FotoTypeID int not null ,
  Foto varchar(1000) not null,
   FotoType varchar(50) as
    (case FotoTypeID 
         when 0 then 'Bidprent'
         when 1 then 'Krantartikel'
         when 2 then 'Persoon'
         else 'Graf'
    end), -- brackets around
  -- constraint as separate entry because it is referencing FotoType
  constraint fototypecheck check (FotoType in (0, 1, 2, 3))
);


这一行没有意义,因为FotoType是文本:

FotoTypeID int not null check (FotoType in (0, 1, 2, 3)),
-- probably it should be
FotoTypeID int not null check (FotoTypeID in (0, 1, 2, 3)),

谢谢你纠正这个案子,也谢谢你指出我其他愚蠢的错误,现在可以了