[Amazon] (500310) Недопустимая операция: столбец «INVC_RLS_LCTN» имеет тип integer, но выражение имеет тип символа меняется; - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь вставить значения в таблицу, которая находится в базе данных RedShift.Но когда я вставляю значение NULL в целочисленный столбец, я получаю следующую ошибку:

Недопустимая операция Amazon: столбец "INVC_RLS_LCTN" имеет тип integer, но выражение имеет тип символов, меняющихся;

Вот схема:

CREATE TABLE DM_TX_LINE_FCT
(
SRRGT_ID BIGINT NOT NULL,
IGT_RSRVTN_ID CHARACTER VARYING(40),
INVC_RLS_LCTN INTEGER,
)
distkey(TX_SRRGT_KEY)
SORTKEY(LCTN_ID, PRCSSNG_DT_KEY);

Я вставляю в таблицу вот так

 ...
 ...                     
     PT.CASHIER_NBR,
     PT.MMBRSHP_CARD_ID,
     MMBR.MMBRSHP_CARD_SRRGT_ID,
     NULL as IGT_RSRVTN_ID,
     NULL as INVC_RLS_LCTN,  
 ... 
 ...  

Может кто-нибудь сказать мне, почему я не могу сохранить NULL вцелочисленное значение?

1 Ответ

0 голосов
/ 21 февраля 2019

База данных угадывает тип значения NULL как VARCHAR.Вероятно, из-за чего-то еще, что происходит в запросе.

Явно приведите его к INTEGER, чтобы разрешить вставку.

CREATE TEMP TABLE "nulltest" ("nulltest" INT);
    --CREATE TABLE

INSERT INTO "nulltest" SELECT CAST(NULL AS VARCHAR(10));
    --ERROR:  column "nulltest" is of type integer but expression is of type character varying
    --HINT:  You will need to rewrite or cast the expression.

INSERT INTO "nulltest" SELECT CAST(NULL AS INTEGER);
    --INSERT 0 1
...