2011-12-28 19 views
5

प्राप्त करें तो मेरे पास मेरी तालिका पर यह stamp timestamp DEFAULT NOW() ON UPDATE NOW() पंक्ति है, और मुझे यह अद्यतन करने की आवश्यकता है जब भी मैं जिस अद्यतन को निष्पादित कर रहा हूं वह मूल रूप से सभी फ़ील्ड पर समान डेटा है।एक ही मान के साथ mysql तालिका अद्यतन करें और अभी भी एक टाइमस्टैम्प अपडेट

वहाँ on update के अलावा अन्य कुछ अन्य विकल्प की तरह तालिका की घोषणा के भीतर ऐसा करने की कोई तरीका है, या मैं एक stamp = now() हर बार जब मैं अद्यतन के लिए मजबूर (और निश्चित रूप से on update हटाने के बाद से यह बेकार हो जाएगा की क्या ज़रूरत है)।

मैं this thread देखा है, लेकिन यह केवल उत्तर देता है क्या हो रहा है और क्यों, कैसे नहीं परोक्ष रूप से

उत्तर

2

मजबूर आप इसे हर बार मजबूर करने के लिए एक ट्रिगर का उपयोग करना होगा अलावा अन्य उसके चारों ओर पाने के लिए।

DELIMITER GO 

CREATE TRIGGER `mydb`.`mytable_U` BEFORE UPDATE ON `mydb`.`mytable` 
FOR EACH ROW 
BEGIN 
    SET NEW.stamp = CURRENT_TIMESTAMP; 
END 
GO 

DELIMITER ; 
+0

धन्यवाद, मैं इसे – Bimp

+0

हम्म का प्रयास करूंगा, क्या मैं इस जावा को अपने जावा कोड में किसी भी मौके से सेट कर सकता हूं, या इसे बाहरी रूप से किया जाना चाहिए? – Bimp

+0

@Jayto: यह डेटाबेस में चला जाता है। जब आप एक अद्यतन – gbn

1

मैं यह आसान सिर्फ निम्न करने के लिए अपने अद्यतन बयान के भाग के रूप पाते हैं:

UPDATE table_name SET last_logged_in = NOW() WHERE `user_id`... 

इस तरह मान हमेशा अद्यतन किया जाता है और अगर और कुछ नहीं बदला है टाइमस्टैम्प अभी भी अद्यतन हो जाता है। आपके प्रश्न के लिए धन्यवाद; यह मेरे जैसा ही था।

3

@veeTrain ने कहा, यदि आप इसे अपने अपडेट स्टेटमेंट में जोड़ते हैं तो यह आसान होगा। यह करने का यह एक और तरीका है, आप unix_timestamp() का भी उपयोग कर सकते हैं।

UPDATE TABLE_NAME SET last_logged_in = unix_timestamp() WHERE आईडी = '$user_id'

मैं जानता हूँ कि मेरी प्रतिक्रिया देर हो चुकी है, लेकिन मैं ने वही समस्या में पड़ गए और लगा मैं भविष्य में इस धागे का सामना कर उन लोगों के लिए मेरे समाधान का हिस्सा चाहते हैं।

+0

के बाहर एक कस्टम डिलीमीटर का उपयोग करने के लिए जो कॉलम 'last_logged_in' के प्रकार पर निर्भर करता है। UNIX_TIMESTAMP() एक पूर्णांक देता है, जबकि अब() एक स्वरूपित DATETIME देता है। एक दूसरे को चुनने के कारण हैं, इस प्रश्न को और अधिक देखें: http://stackoverflow.com/questions/14849911/difference-between-unix-timestamp-and-now-in-mysql – SpaceDog

+1

ठीक है, यह भी निर्भर करता है उपयोगितायें। आप जहां आवश्यक हो वहां PHP के स्वरूपण का भी उपयोग कर सकते हैं: दिनांक ("एफ जे, वाई, जी: आई ए"); PHP संदर्भ: [यहां] (http://php.net/manual/en/function.date.php) और MySQL दिनांक/समय कार्य: [यहां] (http://dev.mysql.com/doc/refman/ 5.6/en/तारीख और समय-functions.html) – Winter

संबंधित मुद्दे