首页 文章

将列更改为可为空

提问于
浏览
242

我想将表列更改为可为空 . 我用过:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

这会在 Modify 处出错 . 什么是正确的语法?

7 回答

  • 15

    正如其他人所观察到的,命令的精确语法因DBMS的不同风格而异 . 您使用的语法适用于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>
    
  • 4

    对于Oracle数据库10g用户:

    alter table mytable modify(mycolumn null);
    

    如果不这样做,会得到“ORA-01735:无效的ALTER TABLE选项”

    ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
    
  • 41

    在PostgresQL中它是:

    ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
    
  • 5

    对于HSQLDB:

    ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
    
  • 0

    虽然我当前 INT NOT NULL ,但您应该发出 ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT .

  • 35

    假设 SQL Server (基于您之前的问题):

    ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL
    

    INT 替换为您的实际数据类型 .

  • 395

    如果这是MySQL语法,那么类型就会丢失,正如其他一些响应所指出的那样 . 正确的MySQL语法应该是:

    ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL
    

    为了清楚MySQL用户,请在此处发布 .

相关问题