postgres将时间戳列约束从notnull设置为null

kdfy810k  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(385)

我试着运行一个迁移,基本上是一个列“modified”,它不是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
);

我试着在网上搜索,在stackoverflow上找到了一些类似的文章,但是没有用,所以希望这里有人能帮上忙。
编辑:

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

在yoyo迁移中

flvtvl50

flvtvl501#

在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
;

db小提琴演示

相关问题