MySQL REPLACE INTO: DELETE + INSERT-এর সংমিশ্রণ
REPLACE INTO স্টেটমেন্ট একটি রো ইনসার্ট করে। যদি প্রাইমারি কি বা ইউনিক ইন্ডেক্সের কারণে ডুপ্লিকেট কি ত্রুটি হয়, তবে পুরনো রোটি ডিলিট করে নতুন রোটি ইনসার্ট করে। অর্থাৎ, এটি DELETE + INSERT-এর সমতুল্য।
উদাহরণ
টেবিল তৈরি এবং ইউনিক ইন্ডেক্স:
CREATE TABLE DemoTable (Id INT, FirstName VARCHAR(50));
ALTER TABLE DemoTable ADD UNIQUE id_index (Id);
REPLACE INTO ব্যবহার
REPLACE INTO DemoTable VALUES (100, 'Chris');
REPLACE INTO DemoTable VALUES (101, 'David');
REPLACE INTO DemoTable VALUES (100, 'Bob'); -- Id 100 আগেই আছে, তাই রিপ্লেস হবে
ফলাফল যাচাই
SELECT * FROM DemoTable;
আউটপুট:
+------+-----------+
| Id | FirstName |
+------+-----------+
| 100 | Bob |
| 101 | David |
+------+-----------+
দেখুন: Id=100 এর জন্য 'Chris' মুছে 'Bob' আসেছে। 2 rows affected বোঝাচ্ছে ১টি ডিলিট + ১টি ইনসার্ট।
REPLACE INTO vs INSERT ... ON DUPLICATE KEY UPDATE
| শৈলী | আচরণ | AUTO_INCREMENT |
|---|---|---|
| REPLACE INTO | পুরনো রো ডিলিট → নতুন ইনসার্ট | নতুন অটো-ইনক্রিমেন্ট মান জেনারেট হতে পারে |
| INSERT ... ON DUPLICATE KEY UPDATE | পুরনো রো আপডেট (ডিলিট করে না) | অটো-ইনক্রিমেন্ট মান বদলায় না |
সুপারিশ: অধিকাংশ ক্ষেত্রে INSERT ... ON DUPLICATE KEY UPDATE ভালো, কারণ এটি আটো-ইনক্রিমেন্ট সংরক্ষণ করে এবং পারফরম্যান্সে ভালো।