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
;""")
]
在yoyo迁移中
在 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
;
我正在尝试 运行 迁移并基本上将一个“已修改”列从 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
;""")
]
在yoyo迁移中
在 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
;