Ich möchte eine Tabellenspalte so ändern, dass sie nullbar ist. Ich habe benutzt:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Dies gibt einen Fehler bei Modify
. Was ist die richtige Syntax?
Ich möchte eine Tabellenspalte so ändern, dass sie nullbar ist. Ich habe benutzt:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Dies gibt einen Fehler bei Modify
. Was ist die richtige Syntax?
Antworten:
für Benutzer von Oracle Database 10g:
alter table mytable modify(mycolumn null);
Sie erhalten "ORA-01735: ungültige ALTER TABLE-Option", wenn Sie es anders versuchen
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
In PostgresQL ist es:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Obwohl ich nicht weiß, welches RDBMS Sie verwenden, müssen Sie wahrscheinlich die gesamte Spaltenspezifikation angeben und nicht nur sagen, dass Sie jetzt möchten, dass es nullwertfähig ist. Zum Beispiel, wenn es aktuell ist INT NOT NULL
, sollten Sie ausstellen ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
.
Null
| NOT NULL
Wird nicht angegeben, ist die Spalte nullwertfähig.
Wie andere beobachtet haben, variiert die genaue Syntax für den Befehl in verschiedenen DBMS-Varianten. Die von Ihnen verwendete Syntax funktioniert in Oracle:
SQL> desc MACAddresses
Name Null? Type
----------------------------------------- -------- ----------------------------
COMPUTER NUMBER
MACADDRESS VARCHAR2(12)
CORRECTED_MACADDRESS NOT NULL VARCHAR2(17)
SQL> alter table MACAddresses
2 modify corrected_MACAddress null
3 /
Table altered.
SQL> desc MACAddresses
Name Null? Type
----------------------------------------- -------- ----------------------------
COMPUTER NUMBER
MACADDRESS VARCHAR2(12)
CORRECTED_MACADDRESS VARCHAR2(17)
SQL>
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;
Dies wird für Sie funktionieren.
Wenn Sie eine Nicht-Null-Spalte ändern möchten, um Null zuzulassen, müssen Sie keine Nicht-Null-Klausel einfügen. Weil Standardspalten nicht null werden.
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
Dies hängt davon ab, welche SQL Engine Sie verwenden. In Sybase funktioniert Ihr Befehl einwandfrei:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
Orakel
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);