Postgres 时间戳列约束从 NOT NULL 到 NULL

Postgres a timestamp column constraint from NOT NULL to NULL

我正在尝试 运行 迁移并基本上将一个“已修改”列从 NOT NULL 变为 NULL。就像没有必要对其施加约束一样,我已经 运行 yoyo 迁移并具有以下输出

psycopg2.ProgrammingError: syntax error at or near "timestamp"
LINE 1: ALTER TABLE shop ALTER COLUMN modified timestamp NULL

指向时间戳^

table本身看起来

CREATE TABLE shop (
    id SERIAL PRIMARY KEY,
    uuid uuid NOT NULL UNIQUE,
    created timestamp with time zone NOT NULL,
    modified timestamp with time zone NOT NULL,
    deleted timestamp with time zone
);

我尝试在网上搜索,在 Whosebug 上找到了一些类似的文章,但没有帮助,所以希望这里有人能提供帮助。

编辑:

steps = [
    step("""ALTER TABLE phrases 
    ALTER COLUMN modified TYPE timestamp,
    ALTER column modified SET NULL
;""")
]

在y​​oyo迁移中

在 Postgres 中,您可以使用 DROP NOT NULL:

使列可为空
ALTER TABLE shop ALTER column modified DROP NOT NULL;

如果你想同时改变数据类型,那么:

ALTER TABLE shop 
    ALTER column modified DROP NOT NULL,
    ALTER COLUMN modified TYPE timestamp
;

Demo on DB Fiddle