我是 DB 設計的新手,并且在 Postgres 中創建了我的表。不過,我需要我的表之一的資料型別從改變date到integer”。但是,當我添加代碼來執行此操作時,出現以下錯誤:
ERROR: cannot cast type date to integer LINE 13: ALTER COLUMN year TYPE INT USING year::integer;
建議我添加該USING行來覆寫此錯誤,但它并沒有解決我的問題。
以下是整個代碼,任何建議將不勝感激。
BEGIN;
CREATE TABLE IF NOT EXISTS public."Actor"
(
actor1_name "char",
actor_id numeric,
actor_type "char",
PRIMARY KEY (actor_id)
);
CREATE TABLE IF NOT EXISTS public."Country"
(
country_name "char",
country_id numeric,
PRIMARY KEY (country_id)
);
CREATE TABLE IF NOT EXISTS public."Event"
(
event_id numeric,
event_type_descr "char",
event_date date,
**year date,**
fatalities numeric,
event_type "char",
PRIMARY KEY (event_id)
);
**ALTER TABLE "Event"
ALTER COLUMN year TYPE INT USING year::integer;**
CREATE TABLE IF NOT EXISTS public."Location"
(
location_name "char",
longitude numeric,
latitude numeric,
location_id numeric,
PRIMARY KEY (location_id)
);
CREATE TABLE IF NOT EXISTS public."Region"
(
region_name "char",
region_id numeric,
PRIMARY KEY (region_id)
);
CREATE TABLE IF NOT EXISTS public."Event_Actor"
(
"Event_event_id" numeric,
"Actor_actor_id" numeric
);
ALTER TABLE public."Location"
ADD FOREIGN KEY (location_id)
REFERENCES public."Country" (country_id)
NOT VALID;
ALTER TABLE public."Country"
ADD FOREIGN KEY (country_id)
REFERENCES public."Region" (region_id)
NOT VALID;
ALTER TABLE public."Event_Actor"
ADD FOREIGN KEY ("Event_event_id")
REFERENCES public."Event" (event_id)
NOT VALID;
ALTER TABLE public."Event_Actor"
ADD FOREIGN KEY ("Actor_actor_id")
REFERENCES public."Actor" (actor_id)
NOT VALID;
ALTER TABLE public."Event"
ADD FOREIGN KEY (event_id)
REFERENCES public."Location" (location_id)
NOT VALID;
END;
uj5u.com熱心網友回復:
假設從列名中您希望日期的年份部分為整數(您應該在問題中清楚地表達這一點!),您可以使用extract().
ALTER TABLE "Event"
ALTER COLUMN year
TYPE integer
USING extract(YEAR FROM year);
作為旁注:避免區分大小寫的物件名稱,如"Event". 他們只會讓事情變得更難,但沒有任何好處。如果您需要“漂亮”的標簽,那是表示層的作業,而不是資料庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/352998.html
標籤:PostgreSQL 更改表 更改列
上一篇:有沒有結合這兩個SQL查詢?
