SQL Server-এর SCOPE_IDENTITY() ফাংশনটির MySQL-এ সমতুল্য হলো LAST_INSERT_ID()। সিনট্যাক্স নিচে দেওয়া হলো:
SELECT LAST_INSERT_ID().
এটি শেষে ইনসার্ট করা রেকর্ডের আইডি রিটার্ন করে।
এখানে আমি প্রাইমারি কী কলামসহ একটি টেবিল তৈরি করে LAST_INSERT_ID()-র ডেমো দেখাচ্ছি।
প্রথমে দুটি টেবিল তৈরি করা যাক। প্রথম টেবিল TestOnLastInsertIdDemo তৈরির কোয়েরি:
mysql> create table TestOnLastInsertIdDemo
-> (
-> StudentId int NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY(StudentId)
-> ); Query OK, 0 rows affected (0.95 sec)
দ্বিতীয় টেবিল TestOnLastInsertIdDemo2 তৈরির কোয়েরি:
mysql> create table TestOnLastInsertIdDemo2
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY(Id)
-> ); Query OK, 0 rows affected (2.79 sec)
দ্বিতীয় টেবিলে কিছু রেকর্ড ইনসার্ট করা যাক। কোয়েরিটি হলো:
mysql> insert into TestOnLastInsertIdDemo2 values(),(),(),(),(),(),(),(); Query OK, 8 rows affected (0.21 sec) Records: 8 Duplicates: 0 Warnings: 0
এখন TestOnLastInsertIdDemo2 টেবিলে একটি ট্রিগার তৈরি করা যাক। ট্রিগার তৈরির কোয়েরি:
mysql> delimiter // mysql> create trigger insertingTrigger after insert on TestOnLastInsertIdDemo
-> for each row begin
-> insert into TestOnLastInsertIdDemo2 values();
-> end;
-> // Query OK, 0 rows affected (0.19 sec) mysql> delimiter ;
যদি TestOnLastInsertIdDemo টেবিলে রেকর্ড ইনসার্ট করা হয়, তবে LAST_INSERT_ID() 1 রিটার্ন করবে। রেকর্ড ইনসার্ট করার কোয়েরি:
mysql> insert into TestOnLastInsertIdDemo values(); Query OK, 1 row affected (0.31 sec)
LAST_INSERT_ID() ফাংশন ব্যবহার করা যাক। কোয়েরিটি হলো:
mysql> select last_insert_id();
আউটপুট নিচে দেওয়া হলো:
+------------------+ | last_insert_id() | +------------------+ | 1 | +------------------+ 1 row in set (0.00 sec)
উপরের আউটপুটে 1 দেখাচ্ছে কারণ LAST_INSERT_ID() মূল টেবিল (TestOnLastInsertIdDemo)-ই বিবেচনা করে, ট্রিগারের ভেতরের টেবিল (TestOnLastInsertIdDemo2) নয়। এটি SCOPE_IDENTITY()-এর মতোই বর্তমান স্কোপের আটো-ইনক্রিমেন্ট আইডি রিটার্ন করে।