SQL Server में फॉरेन की क्या है?
फॉरेन कीज़ का उपयोग SQL Server डेटाबेस में संदर्भ बढ़ाने के लिए किया जाता है। एक फॉरेन की का अर्थ है कि इस टेबल में मान किसी अन्य टेबल में अवश्य प्रकट होना चाहिए।
संदर्भ टेबल को पैरेंट टेबल कहा जाता है, जबकि फॉरेन की समाहित करने वाली टेबल को चाइल्ड टेबल कहा जाता है। चाइल्ड टेबल में फॉरेन कीज़ आमतौर पर पैरेंट टेबल में प्राइमरी की PRIMARY KEY को संदर्भित करती हैं।
फॉरेन कीज़ को CREATE TABLE कमांड या ALTER TABLE कमांड के साथ बनाया जा सकता है।
CREATE TABLE कमांड का उपयोग करके फॉरेन की बनाएं
सिंटैक्स
CREATE TABLE bang_con (
cot1 kieudulieu [ NULL | NOT NULL ],
cot2 kieudulieu [ NULL | NOT NULL ],
…
CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n)
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
);
bang_con
बनाने के लिए चाइल्ड टेबल का नाम।
cot1, cot2
टेबल में बनाने के लिए कॉलम। प्रत्येक कॉलम का 1 डेटा प्रकार होता है, NULL या NOT NULL मान समाहित करने के लिए निर्दिष्ट किया जाना चाहिए, अन्यथा डिफ़ॉल्ट NULL है।
SQL Server में डेटा प्रकार
fk_ten
बनाने के लिए फॉरेन की कंस्ट्रेंट का नाम।
cot_con1, cot_con2, ... cot_con_n
bang_con में वह कॉलम जो bang_me में प्राइमरी की को संदर्भित करना चाहता है।
bang_me
पैरेंट टेबल का नाम जिसमें bang_con में उपयोग की जाने वाली प्राइमरी की होती है।
cot_me1, cot_me2, ... cot_me_n
bang_me में प्राइमरी की बनाने वाला कॉलम। फॉरेन कीज़ bang_con में cot_con1, cot_con2, ... cot_con_n कॉलम्स और डेटा के बीच कंस्ट्रेंट बनाएंगी।
ON DELETE
वैकल्पिक। जब पैरेंट डेटा हटाया जाता है तो चाइल्ड डेटा के साथ क्या करना है दर्शाता है। विकल्प: NO ACTION, CASCADE, SET NULL, SET DEFAULT।
ON UPDATE
वैकल्पिक। जब पैरेंट डेटा अपडेट किया जाता है तो चाइल्ड डेटा के साथ क्या करना है दर्शाता है। विकल्प: NO ACTION, CASCADE, SET NULL, SET DEFAULT।
NO ACTION
ON DELETE या ON UPDATE के साथ उपयोग, यानी पैरेंट डेटा हटाए या अपडेट होने पर चाइल्ड डेटा के साथ कुछ न करें।
CASCADE
ON DELETE या ON UPDATE के साथ उपयोग, अर्थात चाइल्ड डेटा हटाया या अपडेट किया जाता है जब पैरेंट डेटा हटाया या अपडेट किया जाता है।
SET NULL
ON DELETE या ON UPDATE के साथ उपयोग, अर्थात चाइल्ड डेटा को NULL पर सेट किया जाता है जब पैरेंट डेटा हटाया या अपडेट किया जाता है।
SET DEFAULT
ON DELETE या ON UPDATE के साथ उपयोग, अर्थात चाइल्ड डेटा को डिफ़ॉल्ट मान पर सेट किया जाता है जब पैरेंट डेटा हटाया या अपडेट किया जाता है।
- SQL Server में फॉरेन की (कैस्केड डिलीट)
- SQL Server में फॉरेन की (सेट नल)
उदाहरण
CREATE TABLE sanpham (
id_sanpham INT PRIMARY KEY,
ten_sanpham VARCHAR(50) NOT NULL,
phan_loai VARCHAR(25)
);
CREATE TABLE hangtonkho (
id_hangtonkho INT PRIMARY KEY,
id_sanpham INT NOT NULL,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
);
उपरोक्त उदाहरण में, हम पैरेंट टेबल, sanpham टेबल बनाते हैं जिसमें id_sanpham फ़ील्ड से बनी प्राइमरी की होती है। अगला है hangtonkho चाइल्ड टेबल।
hangtonkho टेबल की फॉरेन की बनाने के लिए उपयोग किया गया CREATE TABLE स्टेटमेंट fk_htk_id_sanpham नामक है। फॉरेन की hangtonkho टेबल में id_sanpham कॉलम और sanpham टेबल में id_sanpham के बीच लिंक बनाती है।
उपरोक्त उदाहरण दिखाता है कि 1 कॉलम से बनी फॉरेन की कैसे बनाएं। अब 1 से अधिक सूचना फ़ील्ड के साथ फॉरेन की बनाएं।
उदाहरण
CREATE TABLE sanpham (
ten_sanpham VARCHAR(50) NOT NULL,
diadiem VARCHAR(50) NOT NULL,
phanloai VARCHAR(25),
CONSTRAINT sanpham_pk PRIMARY KEY (ten_sanpham, diadiem)
);
CREATE TABLE hangtonkho (
id_hangtonkho INT PRIMARY KEY,
ten_sanpham VARCHAR(50) NOT NULL,
diadiem VARCHAR(50) NOT NULL,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_sanpham FOREIGN KEY (ten_sanpham, diadiem)
REFERENCES sanpham (ten_sanpham, diadiem)
);
इस उदाहरण में, sanpham पैरेंट टेबल में दो-कॉलम प्राइमरी की ten_sanpham और diadiem है। चाइल्ड टेबल्स और फॉरेन कीज़ को इन दो कॉलम्स को संदर्भित करना होगा।
ALTER TABLE कमांड का उपयोग करके फॉरेन की बनाएं
सिंटैक्स
ALTER TABLE bang_con
ADD CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n);
bang_con
बनाने के लिए चाइल्ड टेबल का नाम।
fk_ten
बनाने के लिए फॉरेन की कंस्ट्रेंट का नाम।
cot_con1, cot_con2, ... cot_con_n
bang_con में वह कॉलम जो bang_me में प्राइमरी की को संदर्भित करना चाहता है।
bang_me
पैरेंट टेबल का नाम जिसमें bang_con में उपयोग की जाने वाली प्राइमरी की होती है।
cot_me1, cot_me2, ... cot_me_n
bang_me में प्राइमरी की बनाने वाला कॉलम। फॉरेन कीज़ bang_con में cot_con1, cot_con2, ... cot_con_n कॉलम्स और डेटा के बीच कंस्ट्रेंट बनाएंगी।
उदाहरण
ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_id_sanpham FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham);
यह उदाहरण hangtonkho टेबल में fk_htk_id_sanpham नामक फॉरेन की बनाता है, जो id_sanpham कॉलम के आधार पर sanpham टेबल को संदर्भित करता है।
आप 1 से अधिक फ़ील्ड के साथ फॉरेन की बना सकते हैं जैसा कि नीचे उदाहरण में दिखाया गया है।
ALTER TABLE hangtonkho
ADD CONSTRAINT fk_htk_sanpham FOREIGN KEY (ten_sanpham, diadiem)
REFERENCES sanpham (ten_sanpham, diadiem);
उपरोक्त उदाहरण hangtonkho टेबल के लिए fk_htk_sanpham नामक फॉरेन की बनाता है, जो ten_sanpham और diadiem कॉलम्स के आधार पर sanpham टेबल को संदर्भित करता है।