मान लीजिए कि मेरी मेज संरचना कुछ इस तरह दिखता है:SQL सर्वर में एक साथ डेटा को दो तालिकाओं में कैसे शामिल किया जा सकता है?
CREATE TABLE [dbo].[table1] (
[id] [int] IDENTITY(1,1) NOT NULL,
[data] [varchar](255) NOT NULL,
CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED ([id] ASC)
)
CREATE TABLE [dbo].[table2] (
[id] [int] IDENTITY(1,1) NOT NULL,
[table1_id] [int] NOT NULL,
[data] [varchar](255) NOT NULL,
CONSTRAINT [PK_table2] PRIMARY KEY CLUSTERED ([id] ASC)
)
पहले तालिका के [id]
क्षेत्र दूसरे के [table1_id]
क्षेत्र से मेल खाती है। मैं एक लेनदेन में दोनों टेबलों में डेटा डालना चाहता हूं। अब मैं पहले से ही पता है कि इस तरह से सम्मिलित करें-चयन-सम्मिलित कर रही है, से यह करने के लिए:
BEGIN TRANSACTION;
DECLARE @id [int];
INSERT INTO [table1] ([data]) VALUES ('row 1');
SELECT @id = SCOPE_IDENTITY();
INSERT INTO [table2] ([table1_id], [data]) VALUES (@id, 'more of row 1');
COMMIT TRANSACTION;
बस इतना ही अच्छा है और जैसे छोटे मामलों के लिए ठीक है कि जहां आप केवल शायद पंक्तियों की एक मुट्ठी डालने कर रहे हैं। लेकिन मुझे क्या करने की ज़रूरत है, एक बार में दो सौ पंक्तियां, या संभवतः एक लाख पंक्तियां भी डालें। डेटा एक और मेज से आ रही है, तो अगर मैं केवल एक ही तालिका में यह डालने गया था, यह आसान होगा, मैं सिर्फ यह करने के लिए होगा:
INSERT INTO [table] ([data])
SELECT [data] FROM [external_table];
लेकिन यह कैसे मैं यह कर और विभाजित हैं डेटा [table1]
और [table2]
में डेटा, और अभी भी अद्यतन [table1_id]
के साथ अद्यतन कर रहा हूं क्योंकि मैं इसे कर रहा हूं? क्या यह भी संभव है?
अच्छा प्रश्न एसक्यूएल के शुरुआती शुरुआती प्रश्न पूछते हैं। –