作为一个谁来到这里的同一个问题,我不知道该怎么做这些答案。我尝试了所有这些,并且总是在一个术语或另一个术语中出现语法错误。回到官方docs之后,我意识到缺少的是一个额外的关键字,例如SET或TYPE。例子:
首先这个
zuri=# ALTER TABLE newarts ALTER COLUMN sunsetdate DATE NULL; ERROR: syntax error at or near "DATE" LINE 2: ALTER COLUMN sunsetdate DATE NULL;
那么这样的:
zuri=# ALTER TABLE newarts ALTER COLUMN sunsetdate TYPE DATE NULL; ERROR: syntax error at or near "NULL" LINE 2: ALTER COLUMN sunsetdate TYPE DATE NULL;
是的,还有一个错误出现,但一旦我指定日期的含义与关键字类型的错误已解决,我转移到另一个。我在添加SET方面也有同样的经历(请参阅我已经引用的官方文档的同一页上的示例)。
至于NOT NULL的具体问题,(尤其是因为它涉及到我的日期问题)我读这answer和它似乎工作 - 我没有得到一个错误信息 -
zuri=# update lili_code set sunsetdate=NULL; UPDATE 0
但后来我读
成功完成后,UPDATE命令返回的形式
UPDATE count
的命令标签
计数是更新的行数。如果count为0,则没有行 匹配条件(这不被视为错误)。
这也在官方文档中,here。
最后,我转向PGAdminIII,在那里我发现NOT NULL是一个简单的复选框。取消它,问题解决了。我确信有一种方法可以在psql的命令行下完成这项工作,但我还没有找到它。
我认为一些变化也可能是由于ALTER和UPDATE之间的差异(参见此SO answer和我的厚颜无耻的评论)以及添加新结构(如OP的问题)和修改数据已经在那里(如我的)。 故事的寓意,请阅读官方文档。不要扫描它。阅读。如果你想知道更多关于NULL和NOT NULL的内容,请阅读this。
错误消息中有一个括号,并且您发布的语法没有。你确定两人同步?你使用的是什么RDBMS?我敢肯定,你需要以某种方式分隔包含空格的列名(可能用引号括起来) – 2010-08-10 11:23:05
使用postgresql – lakshmi 2010-08-10 11:25:05