0
我的表中有一個枚舉類型列。我現在已經決定把它變成一個varchar類型並且加上了一些限制。 Q1)這是一個很好的做法:在列上添加或放置constarint。 Q2)如何將我的枚舉類型列更改爲varchar。與此問題相反question。 我嘗試使用這樣的:在postgresql中將枚舉類型列升級到varchar
ALTER TABLE tablename ALTER COLUMN columnname TYPE VARCHAR
但是,這給我的錯誤:No operator matches the given name and argument type(s). You might need to add explicit type casts.
這是表的定義:
CREATE TABLE tablename (
id1 TEXT NOT NULL,
id2 VARCHAR(100) NOT NULL,
enum_field table_enum,
modified_on TIMESTAMP NOT NULL DEFAULT NOW(),
modified_by VARCHAR(100),
PRIMARY key (id1, id2)
);
它適用於我。你可以用CREATE TYPE和CREATE TABLE語句擴展這個問題,這樣我就可以重現這個問題了嗎? –
如果你嘗試:'ALTER TABLE tablename ALTER COLUMN columnname TYPE VARCHAR USING columnname :: text',會發生什麼?該消息表明它不能將你的enum(技術上是一個類型)轉換爲'varchar',大概是因爲枚舉不是一個簡單的類型。您可能會將某些成功類型轉換爲文字。從https://www.postgresql.org/docs/current/static/sql-altertable.html:「如果沒有隱式或從舊類型轉換爲新類型,則必須提供USING子句」。 – Manngo
@manngo操作符不存在:character varying = table_enum:這是我運行建議命令時得到的錯誤。 table_enum是我的表的枚舉字段。 –