我正在尝试在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存储在整数值中?
数据库猜测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