การแก้ไขคอลัมน์ให้เป็นโมฆะ


318

ฉันต้องการเปลี่ยนคอลัมน์ตารางให้เป็นโมฆะ ฉันเคยใช้:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Modifyนี้จะช่วยให้เกิดข้อผิดพลาดที่ ไวยากรณ์ที่ถูกต้องคืออะไร?


7
โปรดโพสต์ข้อความแสดงข้อผิดพลาดในอนาคต
a'r

1
ฉันลบแท็ก SQL Server ออกแล้วดูเหมือนว่านี่จะกลายเป็นของฟรีทั่วไปสำหรับทุกคน
Martin Smith

คำตอบ:


514

สมมติSQL Server(ขึ้นอยู่กับคำถามก่อนหน้าของคุณ):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

แทนที่INTด้วยประเภทข้อมูลจริงของคุณ


43

สำหรับผู้ใช้ Oracle Database 10g:

alter table mytable modify(mycolumn null);

คุณได้รับ "ORA-01735: ตัวเลือก ALTER TABLE ไม่ถูกต้อง" เมื่อคุณลองใช้เป็นอย่างอื่น

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;

เยี่ยมยอดคุณไม่จำเป็นต้องระบุประเภทข้อมูลเพียงแค่ "null" เพื่อให้เป็นโมฆะ
Gabe Halsmer

41

หากนี่คือไวยากรณ์ของ MySQL ประเภทจะหายไปเนื่องจากคำตอบอื่น ๆ ชี้ให้เห็น ไวยากรณ์ MySQL ที่ถูกต้องน่าจะเป็น:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

โพสต์ที่นี่เพื่อความชัดเจนของผู้ใช้ MySQL



5

แม้ว่าฉันจะไม่ทราบว่าคุณกำลังใช้ RDBMS อะไรอยู่คุณอาจต้องระบุข้อมูลคอลัมน์ทั้งหมดไม่ใช่แค่บอกว่าตอนนี้คุณต้องการให้เป็นโมฆะ ตัวอย่างเช่นถ้าเป็นปัจจุบันคุณควรออกINT NOT NULLALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT


นี่เป็นคำตอบที่ถูกต้องและเป็นคำอธิบายดังนั้นเพียงแค่ชี้แจงว่าNull| NOT NULLไม่ได้ระบุคอลัมน์จะเป็นโมฆะ
ฮามิดเฮดาร์เรียน

4

ดังที่คนอื่น ๆ สังเกตเห็นไวยากรณ์ที่แม่นยำสำหรับคำสั่งนั้นแตกต่างกันไปตามรสชาติต่าง ๆ ของ 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>


0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

สิ่งนี้จะได้ผลสำหรับคุณ

หากคุณต้องการเปลี่ยนคอลัมน์ที่ไม่ใช่นัลเพื่ออนุญาตให้เป็นโมฆะไม่จำเป็นต้องรวมคำสั่งที่ไม่เป็นโมฆะ เพราะคอลัมน์เริ่มต้นไม่เป็นโมฆะ

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

ขึ้นอยู่กับว่าคุณใช้ SQL Engine อยู่ใน Sybase คำสั่งของคุณทำงานได้ดี:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.