sql server - एक कॉलम को बदलना: शून्य करने के लिए शून्य




sql-server tsql (8)

अंतर्निहित जावा डीबी के लिए जेडीके (ओरेकल के अपाचे डर्बी के समर्थित वितरण) में शामिल है, नीचे मेरे लिए काम किया

alter table [table name] alter column [column name] not null;

मेरे पास एक सारणी है जिसमें कई निरर्थक पूर्णांक कॉलम हैं। यह कई कारणों से अवांछनीय है, इसलिए मैं सभी नल को 0 पर अपडेट करना चाहता हूं और फिर इन कॉलम को NOT NULL सेट करना चाहता हूं। नल को 0 से बदलकर, डेटा संरक्षित किया जाना चाहिए।

मैं एक कॉलम को बदलने के लिए विशिष्ट एसक्यूएल वाक्यविन्यास की तलाश में हूं (कॉलम ColumnA कॉल करें) " not null " पर। मान लें कि डेटा को नल रखने के लिए अद्यतन किया गया है।

एसक्यूएल सर्वर 2000 का उपयोग करना।


आपको इसे दो चरणों में करना होगा:

  1. तालिका को अपडेट करें ताकि कॉलम में कोई नल न हो।
UPDATE MyTable SET MyNullableColumn = 0
WHERE MyNullableColumn IS NULL
  1. कॉलम की संपत्ति को बदलने के लिए तालिका को बदलें
ALTER TABLE MyTable
ALTER COLUMN MyNullableColumn MyNullableColumnDatatype NOT NULL

जब तक कॉलम एक अद्वितीय पहचानकर्ता नहीं है

UPDATE table set columnName = 0 where columnName is null

फिर

तालिका को बदलें और फ़ील्ड को नल पर सेट करें और 0 का डिफ़ॉल्ट मान निर्दिष्ट करें


मुझे एक ही समस्या थी, लेकिन फ़ील्ड डिफ़ॉल्ट रूप से शून्य पर उपयोग की जाती थी, और अब मैं इसे 0 पर डिफॉल्ट करना चाहता हूं। एमडीबी के समाधान के बाद एक और लाइन जोड़ने की आवश्यकता है:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

यह आसान लगता है, लेकिन केवल ओरेकल पर काम करता है:

ALTER TABLE [Table] 
ALTER [Column] NUMBER DEFAULT 0 NOT NULL;

इसके अलावा, इसके साथ, आप कॉलम भी जोड़ सकते हैं, न केवल इसे बदल सकते हैं। यह इस उदाहरण में डिफ़ॉल्ट मान (0) के लिए अद्यतन करता है, यदि मान शून्य था।


यह मेरे लिए काम किया:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

स्तंभ बनाना शून्य और डिफ़ॉल्ट जोड़ना एसएसएमएस जीयूआई में भी किया जा सकता है।

  1. जैसा कि अन्य ने पहले से ही कहा है, आप "शून्य नहीं" सेट नहीं कर सकते हैं जब तक कि सभी मौजूदा डेटा "शून्य नहीं" होते हैं:

UPDATE myTable SET myColumn = 0

  1. एक बार ऐसा करने के बाद, डिज़ाइन व्यू में तालिका के साथ (तालिका पर राइट क्लिक करें और "डिज़ाइन व्यू" पर क्लिक करें), आप केवल इस तरह के नल कॉलम को अनचेक कर सकते हैं:

  1. अभी भी चयनित कॉलम के साथ डिज़ाइन व्यू में, आप नीचे दी गई विंडो में कॉलम गुण देख सकते हैं और इसके साथ डिफ़ॉल्ट को 0 पर सेट कर सकते हैं:


FOREIGN KEY CONSTRAINT मामले में ... यदि प्राथमिक कुंजी तालिका के कॉलम में '0' मौजूद नहीं है तो कोई समस्या होगी। इसके लिए समाधान है ...

चरण 1:

इस कोड का उपयोग कर सभी बाधाओं को अक्षम करें:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

चरण 2:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

चरण 3:

इस कोड का उपयोग कर सभी बाधाओं को सक्षम करें:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"




alter-column