SQL सर्वर में मौजूदा तालिका में एक डिफ़ॉल्ट मान के साथ एक स्तंभ जोड़ें


जवाबों:


3497

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

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

उदाहरण:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

टिप्पणियाँ:

वैकल्पिक बाधा नाम:
यदि आप बाहर निकलते हैं, CONSTRAINT D_SomeTable_SomeColतो SQL सर्वर
    एक डिफ़ॉल्ट नाम के साथ एक डिफ़ॉल्ट-कंट्रास्ट को स्वचालित करेगा :DF__SomeTa__SomeC__4FB7FEF6

वैकल्पिक साथ-मान कथन: केवल जरूरत है जब आपके कॉलम Nullable है     और आप डिफ़ॉल्ट मान मौजूदा रिकॉर्ड के लिए इस्तेमाल करना चाहते हैं। यदि आपका कॉलम है , तो यह स्वचालित रूप से     सभी मौजूदा रिकॉर्ड के लिए डिफ़ॉल्ट मान का उपयोग करेगा , चाहे आप निर्दिष्ट करें या नहीं।
WITH VALUES

NOT NULL
WITH VALUES

डिफाल्ट-कॉन्सट्रेंट के साथ इंसर कैसे काम करता है:
यदि आप एक रिकॉर्ड डालते हैं SomeTableऔर यह निर्दिष्ट नहीं करता है SomeCol, तो यह डिफॉल्ट हो जाएगा 0
यदि आप एक रिकार्ड सम्मिलित करें और निर्दिष्ट SomeColके रूप में के मूल्य NULL(और अपने स्तंभ nulls की अनुमति देता है),
    तो डिफ़ॉल्ट-बाधा जाएगा नहीं इस्तेमाल किया जा और NULLमूल्य के रूप में सम्मिलित किया जाएगा।

नोट्स नीचे सभी की शानदार प्रतिक्रिया पर आधारित थे।
इसके लिए विशेष धन्यवाद:
    @Yatrix, @alterStabosz, @YahooSouble, और @StackMan उनकी टिप्पणियों के लिए।


332
ध्यान रखें कि यदि स्तंभ अशक्त है, तो अशक्त मौजूदा पंक्तियों के लिए उपयोग किया जाने वाला मान होगा।
रिचर्ड कोलेट

17
@ Thecrocodilehunter अशक्त स्तंभ का अर्थ है कि आप स्तंभ मान के लिए नल सम्मिलित कर सकते हैं। यदि यह एक अशक्त स्तंभ नहीं है, तो आपको उस डेटा प्रकार के कुछ मूल्य सम्मिलित करने होंगे। इसलिए, मौजूदा रिकॉर्ड्स के लिए, नल उनमें डाला जाएगा और नए रिकॉर्ड्स में, आपका डिफ़ॉल्ट मान तब तक डाला जाएगा जब तक कि अन्यथा निर्दिष्ट न किया जाए। सही बात?
येट्रिक्स

41
मुझे यह उत्तर डबगर की तुलना में थोड़ा बेहतर लगता है क्योंकि यह स्पष्ट रूप से डिफ़ॉल्ट बाधा का नाम देता है। एक डिफ़ॉल्ट बाधा अभी भी dbugger के सिंटैक्स का उपयोग करके बनाई गई है, इसके नाम के अलावा ऑटो-जनरेट किया गया है। DROP-CREATE स्क्रिप्ट लिखते समय सटीक नाम जानना आसान है।
वाल्टर स्टबोसज़

18
@Vertigo यदि स्तंभ है, तो यह केवल सच है NOT NULL। कृपया इसे आज़माएँ: create table blah(a int not null primary key clustered); insert blah values (1), (2); alter table blah add b int null constraint df_blah_b default (0); select * from blah;आपको कॉलम के लिए 2 NULL मान दिखाई देंगे b
यूरिक

48
WITH VALUESमौजूदा अशक्त पंक्तियों को अद्यतन करने के लिए उपयोग करें । MSDN देखें : "यदि जोड़ा स्तंभ अशक्त मानों WITH VALUESको निर्दिष्ट करता है और निर्दिष्ट किया जाता है, तो डिफ़ॉल्ट मान नए कॉलम में संग्रहीत है, मौजूदा पंक्तियों में जोड़ा गया है।"
याहू सीरियस

1008
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

DEFAULT का समावेश कॉलम को डिफ़ॉल्ट मान के साथ मौजूदा पंक्तियों में भरता है , इसलिए नॉट नाल बाधा का उल्लंघन नहीं किया जाता है।


13
उस उत्तर के साथ समस्या यह है कि डिफ़ॉल्ट मूल्य केवल नए रिकॉर्ड के लिए मान्य है। मौजूदा रिकॉर्ड में अभी भी NULL मान होगा।
Roee Gavirel

130
आप पाएंगे कि ऐसा नहीं है। अन्यथा अड़चन का उल्लंघन होगा।
dbugger

35
मौजूदा पंक्तियों में कॉलम डिफ़ॉल्ट मान से भरे हुए हैं। थोड़ा अनुभवजन्य परीक्षण इसे साबित करेगा।
dugugger

80
बस स्पष्ट करने के लिए - यदि "NOT NULL" कमांड से छोड़ा नहीं गया है, तो मौजूदा पंक्तियों का मान अपडेट नहीं किया जाएगा और NULL रहेगा। यदि "NOT NULL" कमांड में शामिल नहीं है, तो मौजूदा पंक्तियों के लिए मान को डिफ़ॉल्ट से मेल करने के लिए अपडेट किया जाएगा।
स्टैक मैन

15
कई स्तंभों के लिए तालिका सारणी में जोड़ें। ADD col_1 int NOT DEFAULT (1), col_2 int NULL
aads 4'13

233

एक अशक्त स्तंभ जोड़ने पर , WITH VALUESयह सुनिश्चित करेगा कि विशिष्ट DEFAULT मान मौजूदा पंक्तियों पर लागू होता है:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES

13
यह एक महत्वपूर्ण बिंदु है। यह मान लेना आसान है कि एक DEFAULTबाधा के साथ एक स्तंभ हमेशा एक मूल्य होगा - वह यह है कि NULL नहीं है, भले ही NOT NULLवह निर्दिष्ट न हो।
बिल ब्रिंकले

6
@tkocmathla उह, मैं BITडेटाटाइप के बारे में बात नहीं कर रहा था, मैं इस विशेष BIT कॉलम के बारे में बात कर रहा था । उत्तर को देखो, कॉलम के रूप में घोषित किया गया है NOT NULL
19

136
ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO

7
यदि तालिका में पहले से ही सामग्री नहीं है तो यह काम नहीं करेगा क्योंकि नया "
अशक्त

129
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'

13
इससे
जोड़ो

5
@ बारोज, यह पूरी तरह से काम नहीं करता है: इसके अलावा अपने पुराने विज्ञापन MYNEWCOLUMN VARCHAR (200) नहीं पूरी तरह से 'SNUGGLES'
15:59

100

जब आप जो कॉलम जोड़ रहे हैं NOT NULLउससे सावधान रहें , फिर भी DEFAULTबाधा (मान) नहीं है। ALTER TABLEबयान है कि मामले में विफल हो जाएगा यदि तालिका यह किसी भी पंक्तियां हैं। समाधान यह है कि या तो NOT NULLनए कॉलम से बाधा को हटा दें , या इसके लिए एक DEFAULTबाधा प्रदान करें ।


2
इसके बारे में कोई SQL नमूना ?
किकेनेट

98

केवल दो लाइनों के साथ सबसे मूल संस्करण

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

81

उपयोग:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())  
GO 

79

यदि आप कई कॉलम जोड़ना चाहते हैं तो आप इसे इस तरह से कर सकते हैं:

ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO


54

डिफ़ॉल्ट मान के साथ मौजूदा डेटाबेस तालिका में एक स्तंभ जोड़ने के लिए, हम उपयोग कर सकते हैं:

ALTER TABLE [dbo.table_name]
    ADD [Column_Name] BIT NOT NULL
Default ( 0 )

डिफ़ॉल्ट डेटाबेस के साथ मौजूदा डेटाबेस तालिका में कॉलम जोड़ने का एक और तरीका है।

डिफ़ॉल्ट मान के साथ एक स्तंभ जोड़ने के लिए एक बहुत अधिक पूरी तरह से SQL स्क्रिप्ट नीचे है अगर जाँच करने से पहले कि स्तंभ मौजूद है, इसे जोड़ने से पहले भी बाधा की जाँच करें और इसे छोड़ देना अगर एक है। इस लिपि में बाधा का नाम भी है, इसलिए हमारे पास एक अच्छा नामकरण सम्मेलन हो सकता है (मुझे DF_ पसंद है) और यदि SQL हमें एक नाम के साथ एक बाधा नहीं देगा, जिसमें एक यादृच्छिक रूप से उत्पन्न संख्या है; इसलिए यह भी अच्छा है कि बाधा को भी नाम दिया जा सके।

-------------------------------------------------------------------------
-- Drop COLUMN
-- Name of Column: Column_EmployeeName
-- Name of Table: table_Emplyee
--------------------------------------------------------------------------
IF EXISTS (
            SELECT 1
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_NAME = 'table_Emplyee'
              AND COLUMN_NAME = 'Column_EmployeeName'
           )
    BEGIN

        IF EXISTS ( SELECT 1
                    FROM sys.default_constraints
                    WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]')
                      AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]')
                  )
            BEGIN
                ------  DROP Contraint

                ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]
            PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped'
            END
     --    -----   DROP Column   -----------------------------------------------------------------
        ALTER TABLE [dbo].table_Emplyee
            DROP COLUMN Column_EmployeeName
        PRINT 'Column Column_EmployeeName in images table was dropped'
    END

--------------------------------------------------------------------------
-- ADD  COLUMN Column_EmployeeName IN table_Emplyee table
--------------------------------------------------------------------------
IF NOT EXISTS (
                SELECT 1
                FROM INFORMATION_SCHEMA.COLUMNS
                WHERE TABLE_NAME = 'table_Emplyee'
                  AND COLUMN_NAME = 'Column_EmployeeName'
               )
    BEGIN
    ----- ADD Column & Contraint
        ALTER TABLE dbo.table_Emplyee
            ADD Column_EmployeeName BIT   NOT NULL
            CONSTRAINT [DF_table_Emplyee_Column_EmployeeName]  DEFAULT (0)
        PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added'
        PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added'
     END

GO

डिफ़ॉल्ट डेटाबेस के साथ मौजूदा डेटाबेस तालिका में कॉलम जोड़ने के ये दो तरीके हैं।


52

आप निम्न तरीके से T-SQL के साथ काम कर सकते हैं।

 ALTER TABLE {TABLENAME}
 ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
 CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

साथ ही साथ आप SQL सर्वर प्रबंधन स्टूडियो का भी उपयोग कर सकते हैं डिज़ाइन मेनू में राइट क्लिक टेबल, डिफ़ॉल्ट मान को टेबल पर सेट करके।

और इसके अलावा, यदि आप डेटाबेस में सभी तालिकाओं में एक ही कॉलम (यदि यह मौजूद नहीं है) जोड़ना चाहते हैं, तो उपयोग करें:

 USE AdventureWorks;
 EXEC sp_msforeachtable
'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;

50

SQL Server 2008-R2 में, मैं डिज़ाइन मोड में जाता हूं - एक परीक्षण डेटाबेस में - और डिजाइनर का उपयोग करके अपने दो कॉलम जोड़कर GUI के साथ सेटिंग की, और फिर कुख्यात Right-Clickविकल्प " जनरेट चेंज स्क्रिप्ट " उत्पन्न करता है " !

बैंग पॉप एक छोटी सी खिड़की के साथ, आपने यह अनुमान लगाया, ठीक से स्वरूपित गारंटी-टू-वर्क परिवर्तन स्क्रिप्ट। आसान बटन मारो।


48

वैकल्पिक रूप से, आप स्पष्ट रूप से बाधा का नाम लिए बिना एक डिफ़ॉल्ट जोड़ सकते हैं:

ALTER TABLE [schema].[tablename] ADD  DEFAULT ((0)) FOR [columnname]

यदि इस बाधा को बनाते समय आपके पास मौजूदा डिफ़ॉल्ट बाधाओं के साथ कोई समस्या है, तो उन्हें निम्न द्वारा हटाया जा सकता है:

alter table [schema].[tablename] drop constraint [constraintname]

1
FYI करें, स्पष्ट रूप से एक मानक नामकरण योजना (उदाहरण के लिए "DF_Table_Column") का उपयोग करके बाधा का नामकरण, रखरखाव में आसानी के लिए। अन्यथा, बाधा का पता लगाने के लिए अधिक काम की आवश्यकता होती है।
माइक क्रिश्चियन

43

यह SSMS GUI में भी किया जा सकता है। मैं नीचे एक डिफ़ॉल्ट दिनांक दिखाता हूं लेकिन डिफ़ॉल्ट मान जो भी हो, निश्चित रूप से हो सकता है।

  1. अपनी तालिका को डिज़ाइन दृश्य में रखें (ऑब्जेक्ट एक्सप्लोरर में तालिका पर राइट क्लिक करें-> डिज़ाइन)
  2. तालिका में एक स्तंभ जोड़ें (या यदि आप पहले से मौजूद हैं तो उस कॉलम पर क्लिक करें जिसे आप अपडेट करना चाहते हैं)
  3. स्तंभ गुण में नीचे, प्रवेश (getdate())या abcया 0या आप जो भी मान में चाहते डिफ़ॉल्ट मान या बाध्यकारी रूप में नीचे बताए अनुसार क्षेत्र:

यहां छवि विवरण दर्ज करें





22

पहले छात्र नाम के साथ एक तालिका बनाएँ:

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)

इसमें एक कॉलम जोड़ें:

ALTER TABLE STUDENT 
ADD STUDENT_NAME INT NOT NULL DEFAULT(0)

SELECT * 
FROM STUDENT

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

चित्र 1


19

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

ALTER TABLE {schemaName}.{tableName}
    ADD {columnName} {datatype} NULL
    CONSTRAINT {constraintName} DEFAULT {DefaultValue}

UPDATE {schemaName}.{tableName}
    SET {columnName} = {DefaultValue}
    WHERE {columName} IS NULL

ALTER TABLE {schemaName}.{tableName}
    ALTER COLUMN {columnName} {datatype} NOT NULL

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

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

यह विधि अशक्त स्तंभ को जोड़ेगी जो बहुत तेजी से अपने आप काम करता है, फिर शून्य स्थिति को सेट करने से पहले डेटा को भरता है।

मैंने पाया है कि एक बयान में पूरी बात करने से हमारी एक और सक्रिय तालिका 4-8 मिनट के लिए बंद हो जाएगी और काफी बार मैंने इस प्रक्रिया को मार दिया है। यह विधि प्रत्येक भाग में आमतौर पर केवल कुछ सेकंड लगते हैं और न्यूनतम लॉकिंग का कारण बनते हैं।

इसके अतिरिक्त, यदि आपके पास अरबों पंक्तियों के क्षेत्र में एक तालिका है तो यह अद्यतन को बैचने लायक हो सकता है:

WHILE 1=1
BEGIN
    UPDATE TOP (1000000) {schemaName}.{tableName}
        SET {columnName} = {DefaultValue}
        WHERE {columName} IS NULL

    IF @@ROWCOUNT < 1000000
        BREAK;
END


18

SQL सर्वर + ऑल्टर टेबल + कॉलम जोड़ें + डिफ़ॉल्ट मान अद्वितीय

ALTER TABLE Product 
ADD ReferenceID uniqueidentifier not null 
default (cast(cast(0 as binary) as uniqueidentifier))

18
IF NOT EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME'
)
BEGIN
    ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default
END

3
मुझे NOT EXISTSतालिका को बदलने का प्रयास करने से पहले चेक पसंद है । बहुत अच्छा उपाय है। यह कैसे काम करता है पर कुछ अतिरिक्त टिप्पणी इसे और भी उपयोगी बना देगी।
माइकल गस्किल

17
--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO

शायद वास्तविक कोड के साथ छवि को बदल दें? के रूप में कॉपी और पेस्ट करना मुश्किल है।
डेविड फेबर

6
यह वर्षों पहले से पहले से मौजूद उत्तरों पर कोई मूल्य नहीं जोड़ता है।
nvoigt

14

तालिका में एक नया कॉलम जोड़ें:

ALTER TABLE [table]
ADD Column1 Datatype

उदाहरण के लिए,

ALTER TABLE [test]
ADD ID Int

यदि उपयोगकर्ता इसे स्वतः बढ़ाना चाहता है तो:

ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL

13

यह SQL सर्वर के लिए है:

ALTER TABLE TableName
ADD ColumnName (type) -- NULL OR NOT NULL
DEFAULT (default value)
WITH VALUES

उदाहरण:

ALTER TABLE Activities
ADD status int NOT NULL DEFAULT (0)
WITH VALUES

यदि आप बाधाओं को जोड़ना चाहते हैं तो:

ALTER TABLE Table_1
ADD row3 int NOT NULL
CONSTRAINT CONSTRAINT_NAME DEFAULT (0)
WITH VALUES

7
यह वर्षों पहले से पहले से मौजूद उत्तरों पर कोई मूल्य नहीं जोड़ता है।
nvoigt

11

यह नीचे दिए गए कोड द्वारा किया जा सकता है।

CREATE TABLE TestTable
    (FirstCol INT NOT NULL)
    GO
    ------------------------------
    -- Option 1
    ------------------------------
    -- Adding New Column
    ALTER TABLE TestTable
    ADD SecondCol INT
    GO
    -- Updating it with Default
    UPDATE TestTable
    SET SecondCol = 0
    GO
    -- Alter
    ALTER TABLE TestTable
    ALTER COLUMN SecondCol INT NOT NULL
    GO

10

नीचे दिए गए प्रश्न के साथ प्रयास करें:

ALTER TABLE MyTable
ADD MyNewColumn DataType DEFAULT DefaultValue

यह तालिका में एक नया कॉलम जोड़ेगा।


6
इस प्रश्न के लिए किसी अन्य उपयोगकर्ता द्वारा दिया गया यह उत्तर
जानिथ 1024

9
ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)

इस क्वेरी से आप डिफ़ॉल्ट मान 0 के साथ डेटाटाइप पूर्णांक का एक स्तंभ जोड़ सकते हैं।


9

खैर, अब मेरे पास अपने पिछले उत्तर के लिए कुछ संशोधन है। मैंने देखा है कि कोई भी उत्तर नहीं दिया गया है IF NOT EXISTS। इसलिए मैं इसका एक नया समाधान प्रदान करने जा रहा हूं क्योंकि मैंने तालिका को बदलने में कुछ समस्याओं का सामना किया है।

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
 IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO

यहां TaskSheetविशेष तालिका का नाम है और IsBilledToClientनया कॉलम है जिसे आप डालने जा रहे हैं और 1डिफ़ॉल्ट मान। नए कॉलम में इसका मतलब है कि मौजूदा पंक्तियों का मूल्य क्या होगा, इसलिए कोई भी स्वचालित रूप से वहां सेट हो जाएगा। हालाँकि, आप स्तंभ प्रकार के सम्मान के साथ अपनी इच्छानुसार बदल सकते हैं जैसे मैंने उपयोग किया हैBIT , इसलिए मैंने डिफ़ॉल्ट मान 1 में रखा है।

मैं उपरोक्त प्रणाली का सुझाव देता हूं, क्योंकि मैंने एक समस्या का सामना किया है। तो समस्या क्या है? समस्या यह है, यदि IsBilledToClientस्तंभ तालिका तालिका में मौजूद है, तो यदि आप नीचे दिए गए कोड के केवल हिस्से को निष्पादित करते हैं, तो आपको SQL सर्वर क्वेरी बिल्डर में एक त्रुटि दिखाई देगी। लेकिन अगर यह मौजूद नहीं है, तो पहली बार निष्पादित करते समय कोई त्रुटि नहीं होगी।

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.