sql server - किसी मौजूदा कॉलम के लिए डिफ़ॉल्ट मान कैसे सेट करें




sql-server sql-server-2008 (8)

यह SQL सर्वर 2008 में काम नहीं कर रहा है:

ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'

त्रुटि है:

कीवर्ड 'एसईटी' के पास गलत वाक्यविन्यास।

मैं क्या गलत कर रहा हूं?


इसके लिए कॉलम का उपयोग नहीं कर सकते हैं, इसके बजाय ऐड का उपयोग करें

ALTER TABLE Employee 
ADD DEFAULT('SANDNES') FOR CityBorn

एक चेक के साथ यक के जवाब की तरह स्क्रिप्ट को त्रुटि के बिना एक से अधिक बार चलाने की अनुमति देने के लिए। (info_schema.columns का उपयोग करने से कम कोड / कस्टम स्ट्रिंग्स)

IF object_id('DF_SomeName', 'D') IS NULL BEGIN
    Print 'Creating Constraint DF_SomeName'
   ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;
END

ऐसे दो परिदृश्य हैं जहां कॉलम के लिए डिफ़ॉल्ट मान बदला जा सकता है,

  1. टेबल बनाने के समय
  2. मौजूदा तालिका के लिए मौजूदा कॉलम संशोधित करें।
  1. तालिका बनाने / नए कॉलम बनाने के समय।

सवाल

create table table_name
(
    column_name datatype default 'any default value'
);
  1. मौजूदा तालिका के लिए मौजूदा कॉलम संशोधित करें

इस मामले में मेरा SQL सर्वर मौजूदा डिफ़ॉल्ट बाधा मान को संशोधित करने की अनुमति नहीं देता है। इसलिए डिफ़ॉल्ट मान को बदलने के लिए हमें मौजूदा सिस्टम जेनरेट या उपयोगकर्ता जेनरेट की गई डिफ़ॉल्ट बाधा को हटाना होगा। और उस डिफ़ॉल्ट मान के बाद किसी विशेष कॉलम के लिए सेट किया जा सकता है।

कुछ चरणों का पालन करें:

  1. कॉलम के लिए सभी मौजूदा डिफ़ॉल्ट मान बाधाओं की सूची।

इस सिस्टम डेटाबेस प्रक्रिया का निष्पादन करें, यह पैरामीटर के रूप में तालिका का नाम लेता है। यह तालिका के भीतर सभी कॉलम के लिए सभी बाधाओं की सूची देता है।

execute [dbo].[sp_helpconstraint] 'table_name'
  1. कॉलम के लिए मौजूदा डिफ़ॉल्ट बाधा ड्रॉप करें।

वाक्य - विन्यास:

alter table 'table_name' drop constraint 'constraint_name'
  1. उस कॉलम के लिए नई डिफ़ॉल्ट मान बाधा जोड़ें:

वाक्य - विन्यास:

alter table 'table_name' add default 'default_value' for 'column_name'

चीयर्स @ !!!


निम्नलिखित आदेश का प्रयास करें;

ALTER TABLE Person11
ADD CONSTRAINT col_1_def
DEFAULT 'This is not NULL' FOR Address

पहले से मौजूद मौजूदा कॉलम को बदलने के लिए बस 3 सरल चरणों को मिला जो पहले शून्य था

update   orders
set BasicHours=0 where BasicHours is null

alter table orders 
add default(0) for BasicHours

alter table orders 
alter  column CleanBasicHours decimal(7,2) not null 

यह SQL सर्वर में काम करेगा:

ALTER TABLE Employee ADD CONSTRAINT DF_SomeName DEFAULT N'SANDNES' FOR CityBorn;

ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn

ALTER TABLE [dbo].[Employee] ADD  DEFAULT ('N') FOR [CityBorn]






default-value