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

MySQL স্টোরড প্রসিডিউরে ডেটা ইনসার্ট করা

স্টোরড প্রসিডিউরের ভেতরে প্যারামিটার গ্রহণ করে টেবিলে ডেটা ইনসার্ট করা যায়। এটি অ্যাপ্লিকেশন লেয়ার থেকে একই ইনসার্ট লজিক বারবার লিখতে হয় না।

টেবিল তৈরি

mysql> CREATE TABLE DemoTable1928 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(20),
    Age INT
);

স্টোরড প্রসিডিউর তৈরি

mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_demo(IN Name VARCHAR(40), IN Age INT)
    BEGIN
        INSERT INTO DemoTable1928 (Name, Age) VALUES (Name, Age);
    END //
mysql> DELIMITER ;

প্রসিডিউর কল করে ডেটা ইনসার্ট

mysql> CALL insert_demo('Chris', 24);

আউটপুট: Query OK, 1 row affected, 1 warning (0.00 sec)

নোট: ওয়ার্নিং হতে পারে STRICK SQL MODE-এ IFNULL বা ডিফল্ট মান নিয়ে।

ফলাফল যাচাই

mysql> SELECT * FROM DemoTable1928;
+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
|  1 | Chris |   24 |
+----+-------+------+

উন্নত প্রসিডিউর (ভ্যালিডেশন সহ)

CREATE PROCEDURE insert_user_safe(IN p_name VARCHAR(40), IN p_age INT, OUT p_id INT)
BEGIN
    IF p_name IS NULL OR p_name = '' THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Name cannot be empty';
    ELSEIF p_age < 0 OR p_age > 150 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid age';
    ELSE
        INSERT INTO DemoTable1928 (Name, Age) VALUES (p_name, p_age);
        SET p_id = LAST_INSERT_ID();
    END IF;
END;

কল করা (OUT প্যারামিটার সহ)

CALL insert_user_safe('David', 30, @new_id);
SELECT @new_id;

সর্বোত্তম অনুশীলন

  • ইনপুট যাচাই (validation) প্রসিডিউরে করুন।
  • LAST_INSERT_ID() দিয়ে জেনারেটেড আইডি রিটার্ন করুন।
  • ট্রানজ্যাকশন ম্যানেজমেন্ট (COMMIT/ROLLBACK) প্রসিডিউরের বাইরে বা অ্যাপ্লিকেশন লেয়ারে করুন।
  1. Windows-এ MySQL টেবিল ডেটা কোথায় সংরক্ষিত থাকে?

  2. MySQL স্টোরড প্রোসিডিউরে SHOW CREATE TABLE এক্সিকিউট করা

  3. MySQL-এ LEFT JOIN ব্যবহার করে টেবিল A-র ডেটা টেবিল B-এ না থাকলে টেবিল C-তে ইনসার্ট করা

  4. MySQL-এ একটি টেবিল থেকে অন্য টেবিলে ডেটা ইনসার্ট করা