Добавить сгенерированный столбец в существующую таблицу Postgres - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь добавить сгенерированный столбец в существующую таблицу с помощью этого сценария.

alter table Asset_Store add column

md5_hash VARCHAR(100) GENERATED ALWAYS AS 

(CAST(UPPER(    
        case
             when OR_ID is not null then MD5(cast(OR_ID as varchar(100)))
             when Asset_ID is not null then MD5(Asset_ID)
             else null
        end 
) as VARCHAR(100)))

STORED

;

но я получаю сообщение об ошибке:

SQL Error [42601]: ERROR: syntax error at or near "("
 Position: 88
 ERROR: syntax error at or near "("
 Position: 88
 ERROR: syntax error at or near "("
 Position: 88

В чем проблема? Я не понимаю

В схеме моей таблицы Asset_Store столбец
OR_ID равен int, а Asset_ID равен varchar(100).

Я предполагаю, что он ожидает немного другой синтаксис ... но каков правильный синтаксис?

1 Ответ

1 голос
/ 17 марта 2020

Ваш синтаксис правильный. Ваша версия PostgreSQL явно не является.

В версии 12:

create table asset_store(or_id text, asset_id text);

alter table Asset_Store add column
md5_hash VARCHAR(100) GENERATED ALWAYS AS 
(CAST(UPPER(    
        case
             when OR_ID is not null then MD5(cast(OR_ID as varchar(100)))
             when Asset_ID is not null then MD5(Asset_ID)
             else null
        end 
) as VARCHAR(100)))
STORED
;
ALTER TABLE
Time: 17.678 ms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...