কম্পিউটার টিউটোরিয়াল

SQL Server-এ TRUNCATE TABLE কমান্ড

SQL Server-এ TRUNCATE TABLE স্টেটমেন্ট একটি টেবিল থেকে সকল রেকর্ড ডিলিট করতে ব্যবহৃত হয়। এই কমান্ড DELETE কমান্ডর মতো কাজ করে কিন্তু WHERE ক্লজ ছাড়া।

SQL Server-এ TRUNCATE TABLE কমান্ড সিনট্যাক্স

TRUNCATE TABLE [ten_CSDL.] [ten_schema.] ten_bang
[ WITH (PARTITIONS (so_phanvung
| so_phanvung TO so_phanvung
| so_phanvung TO so_phanvung))];

ভেরিয়েবল নাম বা মান

ten_CSDL

ঐচ্ছিক। যদি নির্দিষ্ট করা হয়, এটি ডেটাবেজের নাম।

ten_schema

ঐচ্ছিক। এটি স্কিমার নাম (স্কিমা বা নেমস্পেস অনুবাদ) যা টেবিলটি বিলং করে।

ten_bang

রেকর্ড ডিলিট করতে চাওয়া টেবিল।

WITH (PARTITIONS (so_phanvung | so_phanvung TO so_phanvung)

ঐচ্ছিক এবং শুধু পার্টিশন টেবিলের সাথে ব্যবহার করা যায়। যদি নির্দিষ্ট করা হয়, so_phanvung হল এই টেবিলে ডিলিট করতে চাওয়া পার্টিশন নম্বর। একাধিক পার্টিশন ডিলিট করতে কমা দিয়ে আলাদা করুন বা পার্টিশন ভ্যালুর রেঞ্জ দিন। নন-পার্টিশন টেবিলে এই ক্লজ ব্যবহার করলে SQL Server এরর দেবে। এই ফিচার SQL Server-এর সব ভার্সনে উপলব্ধ নয়।

নোট

  1. টেবিলের সকল রেকর্ড ডিলিট করলে, প্রতিটি আইডেন্টিটি কলামের কাউন্টার ابتدا থেকে পুনরাবৃত্তি হবে।
  2. ফরেন কি দিয়ে রেফারেন্স করা টেবিলের সকল রেকর্ড ডিলিট করা যায় না।
  3. টেবিলের সকল রেকর্ড ডিলিট করার আগে ALTER TABLE প্রিভিলেজ থাকতে হবে।

উদাহরণ

SQL Server-এ, ডেটা রিট্রিভ না করলে টেবিলের সকল রেকর্ড ডিলিট করার দ্রুততম পথ TRUNCATE। যদি টেবিল TRUNCATE করা হয়, ডিলিট হওয়া সারিগুলো লগ না হওয়ায় প্রিভিয়াস অপারেশনে রোলব্যাক করা যায় না। TRUNCATE টেবিল DROP করে নতুন CREATE করার চেয়ে সহজ। নিচের উদাহরণ দেখুন।

TRUNCATE TABLE nhanvien;

এই উদাহরণ nhanvien টেবিলের সকল রেকর্ড ডিলিট করবে।

উপরের কমান্ড নিচের DELETE কমান্ডের সমতুল্য।

DELETE FROM nhanvien;

এই দুটি কমান্ড টেবিলের সকল ডেটা ডিলিট করে। পার্থক্য হল DELETE কমান্ডে আপনি চাইলে ডিলিট করার আগের অপারেশনে রোলব্যাক করতে পারেন, TRUNCATE-এ না।

ডেটাবেজ নাম সহ আরেকটি উদাহরণ দেখুন।

TRUNCATE TABLE totn.danhba;

এই উদাহরণ totn নামক ডেটাবেজের সকল danhba এন্ট্রি ডিলিট করবে।

পার্টিশন সহ উদাহরণ

আপনি যদি ১ বা একাধিক পার্টিশন রেকর্ড ডিলিট করতে চান, WITH PARTITIONS ক্লজসহ TRUNCATE TABLE কমান্ড ব্যবহার করুন।

TRUNCATE TABLE nhanvien
WITH (PARTITIONS (1 TO 5, 7));

এই উদাহরণে, টেবিল একটি পার্টিশন টেবিল এবং TRUNCATE TABLE স্টেটমেন্ট এই টেবিলে ১ থেকে ৫ এবং ৭ নম্বর পার্টিশনের রেকর্ড ডিলিট করবে।

প্রশ্নোত্তর

প্রশ্ন: SQL Server-এ TRUNCATE TABLE কমান্ড এক্সিকিউট করার পর ডেটাবেজকে পুরনো স্টেটে রোলব্যাক করা যায় কি?

উত্তর: TRUNCATE TABLE কমান্ড ট্রানজ্যাকশন ব্যবহার করে রোলব্যাক করা যায়। উদাহরণ নিচে।

CREATE TABLE bang_test (cot1 int);

INSERT INTO bang_test VALUES (1);
INSERT INTO bang_test VALUES (2);
INSERT INTO bang_test VALUES (3);

-- ট্রানজ্যাকশন শুরু
BEGIN TRAN;

-- টেবিলের রেকর্ড ডিলিট
TRUNCATE TABLE dbo.bang_test;

-- ডিলিট হওয়া টেবিল রোলব্যাক
ROLLBACK;

SELECT * FROM bang_test;

উপরের SELECT স্টেটমেন্ট নিচের রেকর্ডের ফলাফল রিটার্ন করবে।

cot1
----------
1
2
3

অতএব, ডেটাবেজ স্টেট পুরনো অবস্থায় ফিরে এসেছে এবং ৩টি রেকর্ড bang_test-এ বাকি আছে।

  1. SQL Server-এ PIVOT ক্লজ

  2. SQL Server-এ DELETE TOP কমান্ড

  3. SQL Server-এ ORDER BY ক্লজ

  4. SQL Server-এ SELECT কমান্ড