2012-10-23 5 views
36

मेरे पास दो मौजूदा टेबल (टेबलए और टेबलबी) हैं और मुझे टेबलए में एक नया कॉलम जोड़ने की ज़रूरत है जिसमें टेबलबी के लिए एक विदेशी कुंजी हो और उसके पास एक डिफ़ॉल्ट मान है जो शून्य नहीं है ... और इन दोनों बाधाओं को नामित करने की आवश्यकता है। मैं यह कैसे कर सकता हूँ?नामित डिफ़ॉल्ट बाधा के साथ तालिका जोड़ें कॉलम को कैसे बदलें और विदेशी कुंजी बाधा नामित करें?

उत्तर

73

एक कथन में दोनों बाधाओं को जोड़ना उतना आसान नहीं था जितना मैंने सोचा था कि ऐसा होगा और वहां कई उदाहरण नहीं दिख रहे थे (कम से कम मैं किसी भी आसानी से नहीं ढूंढ पाया), इसलिए मैं सोचा था कि मैं साझा करता हूं कि मैंने इसे कैसे किया और शायद कोई बेहतर तरीका सुझा सकता है?

ALTER TABLE [table name] ADD 
    [New Column Name] [Column Type] 
    CONSTRAINT [constraint name] DEFAULT ([default value]) NOT NULL, 
    CONSTRAINT [constraint name] FOREIGN KEY ([New Column Name]) 
    REFERENCES [Other Table] ([Foreign ID]) 

उदाहरण:

ALTER TABLE tableA ADD 
    myNewColumn BIGINT 
    CONSTRAINT myNamedConstraint_df default (1) NOT NULL, 
    CONSTRAINT myNamedConstraint_fk FOREIGN KEY (myNewColumn) 
    REFERENCES tableB (tableBPrimaryKeyID) 
0

मैं दो भागों में किया था, एसक्यूएल सर्वर प्रबंधन स्टूडियो में।

ALTER TABLE MyTable 
ADD MyId uniqueidentifier DEFAULT (NEWID()) 

फिर मैंने मैन्युअल रूप से GUID को बदल दिया जो वास्तव में नए कॉलम में होना चाहिए। तब मैंने विदेशी कुंजी बाधा को जोड़ा।

ALTER TABLE MyTable 
ADD FOREIGN KEY (MyId) 
REFERENCES OtherTable(Id) 
संबंधित मुद्दे