Als jemand, der hier mit der gleichen Frage kam, bin ich mir nicht sicher, was ich von diesen Antworten halten soll. Ich habe sie alle ausprobiert und bekam immer einen Syntaxfehler "nahe" dem einen oder anderen Begriff. Nachdem ich zum offiziellen docs zurückgekehrt war, wurde mir klar, dass ein zusätzliches Schlüsselwort wie SET oder TYPE fehlte. Beispiele:
erster dieses
zuri=# ALTER TABLE newarts ALTER COLUMN sunsetdate DATE NULL; ERROR: syntax error at or near "DATE" LINE 2: ALTER COLUMN sunsetdate DATE NULL;
Dann folgt aus:
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;
Ja, es ist immer noch ein Fehler, aber einmal angegeben ich die Bedeutung von DATE mit dem Schlüsselwort TYPE die Fehler wurde behoben und ich ging zu einem anderen weiter. Ich hatte die gleiche Erfahrung mit dem Zusatz von SET (siehe die Beispiele auf der gleichen Seite der offiziellen Dokumente, die ich bereits zitiert habe).
In Bezug auf das spezifische Problem der NOT NULL, (vor allem als es um meine Ausgabe von Terminen bezieht) las ich diese answer und es schien zu funktionieren - ich nicht eine Fehlermeldung erhalten hat -
zuri=# update lili_code set sunsetdate=NULL; UPDATE 0
aber dann las ich
Bei erfolgreichem Abschluss wird ein UPDATE Befehl gibt einen Befehl Tag des Formulars
UPDATE count
Die Anzahl ist die Anzahl der aktualisierten Zeilen. Wenn count 0 ist, haben keine Zeilen die Bedingung erfüllt (dies wird nicht als Fehler betrachtet).
Das ist auch in der offiziellen Dokumentation, here.
Schließlich wandte ich mich an PGAdminIII, wo ich feststellte, dass NOT NULL ein einfaches Kontrollkästchen ist. Deaktivieren Sie es, Problem gelöst. Ich bin sicher, es gibt eine Möglichkeit, dies mit psql an der Kommandozeile zu machen, ich habe es einfach nicht gefunden.
Ich denke, einige der Variation kann auch auf die Unterschiede zwischen ALTER und UPDATE (siehe SO answer und meine freche Kommentar) sowie zwischen dem Hinzufügen neuer Strukturen (wie in der OP-Frage) und Ändern von Daten, die ist schon da (wie bei mir). Die Moral der Geschichte, lesen Sie die offizielle Dokumentation. Scanne es nicht. Lies es. Und wenn Sie mehr über NULL und NOT NULL erfahren möchten, lesen Sie this.
Die Fehlermeldung enthält Klammern und die von Ihnen gepostete Syntax nicht. Sind Sie sicher, dass die beiden synchron sind? Und welche RDBMS verwenden Sie? Ich bin mir ziemlich sicher, dass Sie die Spaltennamen, die Leerzeichen enthalten, auf irgendeine Weise abgrenzen müssen (wahrscheinlich in Anführungszeichen) –
Ich benutze postgresql – lakshmi