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

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

我试着运行一个迁移,基本上是一个列“modified”,它不是null就是null。就像不需要对其进行限制一样,我已经运行了yoyo迁移,并获得了以下输出

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

指向时间戳^
table本身看起来

  1. CREATE TABLE shop (
  2. id SERIAL PRIMARY KEY,
  3. uuid uuid NOT NULL UNIQUE,
  4. created timestamp with time zone NOT NULL,
  5. modified timestamp with time zone NOT NULL,
  6. deleted timestamp with time zone
  7. );

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

  1. steps = [
  2. step("""ALTER TABLE phrases
  3. ALTER COLUMN modified TYPE timestamp,
  4. ALTER column modified SET NULL
  5. ;""")
  6. ]

在yoyo迁移中

flvtvl50

flvtvl501#

在postgres中,可以使用 DROP NOT NULL :

  1. ALTER TABLE shop ALTER column modified DROP NOT NULL;

如果要同时更改数据类型,则:

  1. ALTER TABLE shop
  2. ALTER column modified DROP NOT NULL,
  3. ALTER COLUMN modified TYPE timestamp
  4. ;

db小提琴演示

相关问题