programing

mariadb에 가상 열 생성 및 case 문 실패

goodcopy 2023. 6. 17. 22:51
반응형

mariadb에 가상 열 생성 및 case 문 실패

하려고 합니다.create a table in MariaDB와 함께virtual columna로 정의된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) 
)

하지만 그것은 항상 나에게 이 오류를 줍니다.

#42000SQL 구문에 오류가 있습니다. 사용할 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서에서 확인하십시오.
near 'case FotoType아이디
0일 때는 'Bidpreent'입니다.
1일 때 7행에서 '크란타'

제가 가상 칼럼과 사례를 만드는 방법을 구글에 검색했을 때, 제가 찾은 링크는 제가 옳았다는 것을 암시하는 것처럼 보이지만, 분명히 저는 그렇지 않습니다.그래서 저는 뭔가를 놓치고 있습니다.
테이블 만들기 문에 문제가 있는 것은 무엇입니까?

편집
제 버전은10.3.21-MariaDB

생성된 열에는 대소문자열이 필요합니다.

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))
);

db<>디플 데모


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)),

언급URL : https://stackoverflow.com/questions/65467309/create-virtual-column-in-mariadb-with-case-statement-fails

반응형