我正在尝试在RedShift数据库中的表中插入值。但是,当我在整数列中插入NULL值时,出现以下错误:
Amazon无效操作:“ INVC_RLS_LCTN”列的类型为整数 但是表达式的类型是字符变化的;
以下是架构:
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?
答案 0 :(得分:0)
数据库正在猜测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