আমি Current_timestamp
ডিফল্ট মান হিসাবে সেট করতে সক্ষম নই । আমার Mysql
সংস্করণটি 5.5.47
।
প্রশ্ন হল
ALTER TABLE `downloads` ADD `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;
এটি আমার স্থানীয় ডিবি দিয়ে কাজ করছে mysql V5.6.56
।
আমি Current_timestamp
ডিফল্ট মান হিসাবে সেট করতে সক্ষম নই । আমার Mysql
সংস্করণটি 5.5.47
।
প্রশ্ন হল
ALTER TABLE `downloads` ADD `date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;
এটি আমার স্থানীয় ডিবি দিয়ে কাজ করছে mysql V5.6.56
।
উত্তর:
থেকে মাইএসকিউএল 5.5 ম্যানুয়াল :
আপনি এখন () বা CURRENT_DATE এর মতো কোনও ফাংশনের মান হিসাবে তারিখ কলামের জন্য ডিফল্ট সেট করতে পারবেন না। ব্যতিক্রম হ'ল আপনি একটি TIMESTAMP কলামের জন্য ডিফল্ট হিসাবে CURRENT_TIMESTAMP নির্দিষ্ট করতে পারেন।
সুতরাং, আপনি যা অর্জন করতে চান তা যদি আপনি কোনও TIMESTAMP
কলামের পরিবর্তে একটি কলাম যুক্ত করেন তবে মাইএসকিউএল 5.5 এ কাজ করবে DATE
।
5.6.x এর পরিবর্তনগুলি যা কার্যকারিতাটির অনুমতি দেয় এখানে ডকুমেন্টেড রয়েছে এবং আমি সম্পূর্ণতার জন্য প্রাসঙ্গিক সংক্ষিপ্তসারটি উদ্ধৃত করছি:
মাইএসকিউএল ৫..6.৫ অনুসারে, টাইমস্ট্যাম্প এবং ডেটটাইম কলামগুলি স্বয়ংক্রিয়ভাবে বর্তমান তারিখ এবং সময় (যা বর্তমান টাইমস্ট্যাম্প) আপডেট করা যেতে পারে। 5.6.5 এর আগে, এটি কেবলমাত্র টাইমস্ট্যাম্পের জন্য, এবং প্রতি টেবিলে সর্বাধিক এক টাইমস্ট্যাম্প কলামের জন্য সত্য।
এই উত্তরটি পরীক্ষা করুন ।
আপনার বিকল্পগুলি হ'ল:
কলামের ধরণটি TIMESTAMP তে পরিবর্তন করুন, যেমন:
ALTER TABLE `downloads` ADD `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
একটি ট্রিগার তৈরি করুন যা কলামটি স্বয়ংক্রিয়ভাবে আপডেট হয়:
ALTER TABLE `downloads` ADD `date` DATETIME NULL; -- date must allow
-- NULLs or default
-- to a special value
DROP TRIGGER IF EXISTS downloads_BI;
DELIMITER //
CREATE TRIGGER downloads_BI
BEFORE INSERT ON downloads FOR EACH ROW
BEGIN
IF (NEW.date IS NULL) THEN -- change the isnull check for the default used
SET NEW.date = now();
END IF;
END//
DELIMITER ;
আপনি যদি আপডেটের সাথে স্বয়ংক্রিয়ভাবে আপডেট হওয়া বা নাল মানগুলি প্রতিরোধ করতে চান তবে আপনি একটি আপডেট মানও তৈরি করতে চাইতে পারেন।
mysql> INSERT INTO downloads (i) VALUES (1); -- I do not set date
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM downloads;
+------+---------------------+
| i | date |
+------+---------------------+
| 1 | 2016-03-22 09:27:52 |
+------+---------------------+
1 row in set (0.00 sec)