MySQL-এ TIMESTAMP DEFAULT CURRENT_TIMESTAMP কলামে ভ্যালু না দিয়ে (খালি) ইনসার্ট করলে স্বয়ংক্রিয়তঃ বর্তমান ডেট-টাইম সেট হয়।
টেবিল তৈরি
CREATE TABLE DemoTable (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserLoginDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
ইনসার্ট (কলাম বাদ দিয়ে)
INSERT INTO DemoTable VALUES(); -- সব ডিফল্ট
INSERT INTO DemoTable VALUES(); -- সব ডিফল্ট
INSERT INTO DemoTable VALUES(); -- সব ডিফল্ট
INSERT INTO DemoTable(UserId) VALUES(NULL); -- শুধু PK দিয়ে
ফলাফল
+--------+---------------------+
| UserId | UserLoginDate |
+--------+---------------------+
| 1 | 2019-11-03 12:55:44 |
| 2 | 2019-11-03 12:55:45 |
| 3 | 2019-11-03 12:55:46 |
| 4 | 2019-11-03 12:56:06 |
+--------+---------------------+
ব্যাখ্যা
- প্রতিটি ইনসার্টে সার্ভারের বর্তমান টাইমস্ট্যাম্প আটোমেটিক সেট হয়েছে
UserIdঅটো-ইনক্রিমেন্ট হওয়ায় NULL দিয়ে অটো জেনারেট হয়েছেTIMESTAMPটাইপের প্রথম কলামে ডিফল্টCURRENT_TIMESTAMPএবংON UPDATE CURRENT_TIMESTAMPথাকে (পুরানো ভার্শন)
গুরুত্বপূর্ণ পরিবর্তন (MySQL 5.6.5+)
- শুধু এক্সপ্লিসিট
DEFAULT CURRENT_TIMESTAMPদিলেই অটো টাইমস্ট্যাম্প działa করে ON UPDATE CURRENT_TIMESTAMPআলাদা যোগ করতে হয় আপডেটে টাইম আপডেটের জন্যNULLইনসার্ট করলেও করেন্ট টাইমস্ট্যাম্প সেট হয় (যদি NULLable না হয়)
বিকল্প: DATETIME (MySQL 5.6.5+)
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
DATETIME রেঞ্জ বেশি (১০০০-৯৯৯৯ বছর), TIMESTAMP ২০৩৮ সাল পর্যন্ত (Y2K38 সমস্যা)।