Redshift - 如何删除NOT NULL约束?

shi*_*eng 17 sql amazon-redshift

由于Redshift不支持ALTER COLUMN,我想知道是否可以从Redshift中的列中删除NOT NULL约束.

Rah*_*thi 29

你无法改变这张桌子.

还有另一种方法.您可以使用NULL约束创建新列.将旧列中的值复制到此新列,然后删除旧列.

像这样的东西:

ALTER TABLE table1 ADD COLUMN somecolumn (definition as per your reqm);
UPDATE table1 SET somecolumn = oldcolumn;
ALTER TABLE table1 DROP COLUMN oldcolumn;
ALTER TABLE table1 RENAME COLUMN somecolumn TO oldcolumn;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果列是排序键的一部分,它将无法工作.不幸的是,在这种情况下,您必须重新创建表. (2认同)
  • 请注意,无论原始列位于何处,您添加的列都会到达表的末尾,因此在列顺序很重要的情况下,您可能会遇到问题。 (2认同)

Sta*_*vas 9

没有办法在Redshift上更改列.

我建议您创建新列,将值从旧列复制到新列并删除旧列.

ALTER TABLE Table1 ADD COLUMN new_column (___correct_column_definition___);
UPDATE Table1 SET new_column = column;
ALTER TABLE Table1 DROP COLUMN column;
ALTER TABLE Table1 RENAME COLUMN new_column TO column;
Run Code Online (Sandbox Code Playgroud)