কম্পিউটার

SQL সার্ভারে সেট নাল সহ বিদেশী কী

নিম্নলিখিত টিউটোরিয়াল SQL সার্ভারে সেট নাল অন ডিলিট সীমাবদ্ধতার সাথে বিদেশী কী বিদেশী কী ব্যাখ্যা করবে৷

এসকিউএল সার্ভারে ডিলিট এ সেট NULL সহ বিদেশী কী কী?

বিদেশী কীগুলি মুছে ফেলার উপর নাল সেট করতে বাধ্য যার মানে যখন প্যারেন্ট টেবিলের একটি রেকর্ড মুছে ফেলা হয়, তখন বিদেশী কী মান ক্ষেত্রের চাইল্ড টেবিলে সংশ্লিষ্ট রেকর্ড সেট করা হবে NULL থেকে চাইল্ড টেবিলে লেখা টেবিলটি SQL সার্ভার থেকে মুছে ফেলা হবে না।

বিদেশী কীগুলি প্রদান করে যে মুছে ফেলার সময় শূন্য মানটি তৈরি করা টেবিল বা ALTER TABLE বিবৃতি দিয়ে তৈরি করা যেতে পারে৷

CREATE TABLE স্টেটমেন্ট দিয়ে মুছে ফেলা হলে NULL মান সেট করতে বাধা সহ বিদেশী কী তৈরি করুন

সিনট্যাক্স

  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 SET NULL
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
);

bang_con

আপনি যে চাইল্ড টেবিলটি তৈরি করতে চান তার নাম৷

cot1, cot2

সারণিতে আপনি যে কলামটি তৈরি করতে চান৷ প্রতিটি কলামে 1টি ডেটা টাইপ আছে, শূন্য বা NULL মান ধারণ করার জন্য অবশ্যই নির্দিষ্ট করতে হবে, অন্যথায় ডিফল্ট NULL।

SQL সার্ভারে ডেটার ধরন

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-তে প্রাথমিক কী তৈরি করে৷ বিদেশী কীগুলি ডেটা এবং কলাম cot_con1, cot_con2, এর মধ্যে সীমাবদ্ধতা তৈরি করবে। cot_con_n in bang_con.

অন ডিলিট সেট নাল

প্যারেন্ট টেবিলের ডেটা মুছে গেলে চাইল্ড টেবিলের ডেটা NULL এ সেট করা হবে৷ উপ-ডেটা মুছে ফেলা হয় না।

আপডেট চলছে

বিকল্প৷ পিতামাতার ডেটা আপডেট করা হলে সন্তানের ডেটার সাথে কী করতে হবে তা নির্দেশ করে৷ নো অ্যাকশন, ক্যাসকেড, সেট নাল এবং সেট ডিফল্ট বিকল্প রয়েছে৷

কোন পদক্ষেপ নেই

চালু মুছে ফেলা বা আপডেট করার সাথে ব্যবহার করুন, অর্থাৎ যখন পিতামাতার ডেটা মুছে ফেলা বা আপডেট করা হয় তখন সন্তানের ডেটা দিয়ে কিছুই করবেন না৷

CASCADE

অন ডিলিট বা অন আপডেটের সাথে ব্যবহার করুন, যার অর্থ হল যখন পিতামাতার ডেটা মুছে ফেলা বা আপডেট করা হয় তখন চাইল্ড ডেটা মুছে বা আপডেট করা হয়৷

NULL সেট করুন

অন ডিলিট বা অন আপডেটের সাথে ব্যবহার করুন, যার অর্থ হল যখন প্যারেন্ট ডেটা মুছে ফেলা বা আপডেট করা হয় তখন চাইল্ড ডেটা NULL এ সেট করা হয়৷

ডিফল্ট সেট করুন

অন ডিলিট বা অন আপডেটের সাথে ব্যবহার করুন, মানে যখন প্যারেন্ট ডেটা মুছে দেওয়া বা আপডেট করা হয় তখন চাইল্ড ডেটা ডিফল্ট মান সেট করা হয়৷

উদাহরণস্বরূপ

  CREATE TA BLE 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,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);

এই উদাহরণে, আমরা তথ্য ক্ষেত্র id_sanpham সহ প্রাথমিক কী সহ প্যারেন্ট টেবিল, সানফাম তৈরি করেছি। তারপরে hangtonkho নামে একটি চাইল্ড টেবিল রয়েছে যার সাথে একটি বিদেশী কী মুছে ফেলার সীমাবদ্ধতা রয়েছে। CREATE TABLE স্টেটমেন্ট হ্যাংটনখো টেবিলে fk_htk_id_sanpham নামে একটি বিদেশী কী তৈরি করে। বিদেশী কী হ্যাংটনখো টেবিলের আইডি_সানফাম কলাম এবং সানফাম টেবিলের আইডি_সানফামের মধ্যে সম্পর্ক তৈরি করে।

এই বিদেশী কীটি এসকিউএল সার্ভারকে জানাতে ডিলিট সেট নাল-এ নির্দিষ্ট করা হয়েছে যে যখন প্যারেন্ট টেবিলের ডেটা থাকে তখন চাইল্ড টেবিলের সংশ্লিষ্ট রেকর্ড মানটিকে NULL এ সেট করা প্রয়োজন মুছে ফেলা হয়েছে এই উদাহরণে, যখন id_sanpham টেবিল থেকে মুছে ফেলা হয়, id_sanpham ব্যবহার করে হ্যাংটনখো টেবিলে সংশ্লিষ্ট রেকর্ডটি NULL এ সেট করা হবে।

এটা মনে রাখা গুরুত্বপূর্ণ যে হ্যাংটনখো টেবিলের id_sanpham কলামটি NULL-এ সেট করা হবে, তাই এই কলামটি NULL মান গ্রহণ করার অনুমতি দেওয়া হয়েছে তা নিশ্চিত করা প্রয়োজন৷ CREATEA দিয়ে তৈরি করার সময় NOT NULL এ সেট করা থাকলে, নিম্নলিখিত ত্রুটির সম্মুখীন হবে৷

  CREATE TABL E 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)
ON DELETE SET NULL
);

Msg 1761, Level 16, State 0, Line 1
Cannot create the foreign key 'fk_htk_id_sanpham' with the SET NULL referential action, because one or more referencing columns are not nullable.

Msg 1750, Level 16, State 0, Line 1
Could thể tạo constraint hoặc chỉ mục. Xem lỗi trước.

নিশ্চিত করুন যে আপনি নীচে দেখানো হিসাবে NULL মান পেতে হ্যাংটনখো টেবিলে id_sanpham কলামটি সংজ্ঞায়িত করেছেন৷

  CREATE TABLE h angtonkho 
( id_hangtonkho INT PRIMARY KEY,
id_sanpham INT,
soluong INT,
luong_toithieu INT,
luong_toida INT,
CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL
);

Comma nd (s) completed successfully.

অলটার টেবিল বিবৃতি দিয়ে মুছে ফেলার সময় সীমাবদ্ধতার সাথে একটি বিদেশী কী তৈরি করা NULL মান সেট করে

সিনট্যাক্স

  ALTER TABLE state_con 
ADD CONSTRAINT fk_ten
FOREIGN KEY (cot_con1, cot_con2, . cot_con_n)
REFERENCES bang_me (cot_me1, cot_me2, . cot_me_n)
ON DELETE SET NULL;

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-তে প্রাথমিক কী তৈরি করে৷ বিদেশী কীগুলি ডেটা এবং কলাম cot_con1, cot_con2, এর মধ্যে সীমাবদ্ধতা তৈরি করবে। cot_con_n in bang_con.

অন ডিলিট সেট নাল

উল্লেখ করে যে যখন প্যারেন্ট টেবিলের ডেটা মুছে ফেলা হয় তখন চাইল্ড ডেটা NULL মানতে সেট করা হবে৷ চাইল্ড টেবিলের ডেটা মুছে ফেলা হবে না৷

উদাহরণস্বরূপ

  ALTER T ABLE hangtonkho 
ADD CONSTRAINT fk_htk_id_sanpham
FOREIGN KEY (id_sanpham)
REFERENCES sanpham (id_sanpham)
ON DELETE SET NULL;

এই উদাহরণে, হ্যাংটনখো সাব টেবিলটি fk_htk_id_sanpham নামের একটি বিদেশী কী দিয়ে তৈরি করা হয়েছে, যা id_sanpham-এর উপর ভিত্তি করে প্যারেন্ট টেবিল সানফামকে উল্লেখ করে।

SQL সার্ভারের জন্য ON DELETE SET NULL উল্লেখ করে বুঝতে হবে যে যখন প্যারেন্ট টেবিলের id_sanpham ডেটা মুছে ফেলা হবে, হ্যাংটনখো সাব টেবিলের সংশ্লিষ্ট রেকর্ডটি NULL মান সেট করা হবে৷


  1. SQL সার্ভারে শূন্য শর্ত নয়

  2. ম্যানেজমেন্ট স্টুডিও সহ MS SQL সার্ভার পরিচালনা করুন

  3. MS SQL সার্ভার কি?

  4. মাইক্রোসফ্ট এসকিউএল সার্ভারে ডাটাবেসের সাথে বেসিক অপারেশন