मैं संबंधित प्रश्नों का एक बहुत देखा है के लिए अद्यतन CURRENT_TIMESTAMP पर अनुमति नहीं दे रहा है, लेकिन मैं इस विशिष्ट प्रश्न पर मेरी उंगली नहीं डाल सकते कर सकते हैं: (जब के लिएMySQL एक DATETIME क्षेत्र
मैं दोनों एक टाइमस्टैम्प के साथ एक MySQL तालिका है फ़ील्ड बनाया गया था) और एक डेटाटाइम (प्रत्येक बार फ़ील्ड अपडेट हो जाता है)। यह इस तरह दिखता है:
CREATE TABLE 'vis' (
ID BIGINT PRIMARY KEY AUTO_INCREMENT NOT NULL,
ENTRY VARCHAR(255),
AUTHOR VARCHAR(255),
CREATED_AT TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UPDATED_AT DATETIME ON UPDATE CURRENT_TIMESTAMP,
UPDATED_BY VARCHAR(255)
)
जब मैं इस हालांकि कोशिश, त्रुटि मैं हो रही है: (SQL Error: 1294 SQL State: HY000) - Invalid ON UPDATE clause for 'updated_at' field
हर जगह मैंने पढ़ा है (यहां तक कि स्टैक ओवरफ़्लो पर) से पता चलता मैंने अभी तक ऐसा करने में सक्षम होना चाहिए, मुझे यह त्रुटि मिल रही है। शायद एक ऐसा क्षेत्र है जहां हर बार जब मैं इसे अपडेट करता हूं तो स्वचालित रूप से उस समय को अद्यतन करता है?
मैं MySQL सर्वर 5.5 का उपयोग कर रहा हूं।
यह पूरी तरह से काम करता है, धन्यवाद! मैंने टेबल घोषणा पर 'अद्यतन अद्यतन समय पर' से छुटकारा पा लिया, और फिर मैंने तालिका बनाने के बाद इस वाक्यविन्यास को संसाधित किया: प्रत्येक पंक्ति सेट के लिए 'विज़िटर ऑन' v'update_entry 'पहले से सेट करें' NEW.updated_at = CURRENT_TIMESTAMP'और अब यह हर बार अपडेट होता है जब मैं उस विशेष पंक्ति को अद्यतन करता हूं। कहानी का नैतिक: ** कहीं भी ऑनलाइन जो कहता है कि आप दो टाइमस्टैम्प या ऑनडेट के साथ डेटाटाइम कर सकते हैं गलत है! ** कम से कम MySQL सर्वर 5.5 के लिए। –
@MichaelPlautz - "धन्यवाद, मैंने इसे आपके संसाधन के साथ हल किया" के बजाय हमेशा अच्छा लगा "ठीक है, लेकिन मुझे इसे ट्रिगर पर करने के लिए कोड चाहिए", धन्यवाद :) – slugonamission
प्रयुक्त संस्करण बहुत महत्वपूर्ण प्रतीत होता है। दस्तावेज़ीकरण का कहना है कि यह काम करेगा यदि MySQL संस्करण 5.6 का उपयोग किया जाता है: http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html। मैं पुष्टि नहीं कर सकता क्योंकि मेरा सर्वर 5.1 :( –