Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL दो कॉलम टाइमस्टैम्प डिफ़ॉल्ट अब मान ERROR 1067

आपके पास केवल एक हो सकता है टाइमस्टैम्प कॉलम जो डिफ़ॉल्ट रूप से CURRENT_TIMESTAMP . है या NOW() प्रति टेबल। यह MySQL में एक प्रसिद्ध बग है।

इसे दूर करने के लिए, बनाए गए कॉलम के लिए अपना डिफ़ॉल्ट एक मान्य टाइमस्टैम्प मान बनाएं, फिर अपने सीआरयूडी एप्लिकेशन कोड में टाइमस्टैम्प डालें। NOW() का उपयोग करें। या CURRENT_TIMESTAMP आपके अपडेट किए गए कॉलम डिफ़ॉल्ट के लिए।

संदर्भ सामग्री:http://dev.mysql.com/doc/ रेफमैन/5.1/hi/timestamp.html

इस क्षेत्र में MySQL की कमियों को और स्पष्ट करने के लिए, निम्नलिखित कोड पर विचार करें:

CREATE TABLE testing_timestamps (
  id INT NOT NULL AUTO_INCREMENT,
  pk_id INT NOT NULL,
  col1 TIMESTAMP DEFAULT 0,
  col2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY(id)
);

delimiter $$
CREATE TRIGGER testing_timestamps_trigger
  AFTER INSERT ON testing_timestamps
  FOR EACH ROW 
  BEGIN
    UPDATE testing_timestamps SET col1 = NOW() WHERE id = MAX(id);
  END;
$$
delimiter ;

INSERT INTO testing_timestamps (id) VALUES (0);

इससे आउटपुट प्रदर्शित होगा:

mysql> INSERT INTO testing_timestamps (id) VALUES (0);
ERROR 1442 (HY000): Can't update table 'testing_timestamps' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

यह एक बेकार बात है क्योंकि इस उदाहरण में ट्रिगर का उपयोग करना एक अच्छा काम होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL सम्मिलित करें जहाँ मौजूद नहीं है / यदि मौजूद नहीं है

  2. MySQL समूह को कुल कार्यों के बिना प्रश्नों द्वारा समूह की अनुमति क्यों देता है?

  3. मैं सी ++ में MySQL का उपयोग कैसे कर सकता हूं?

  4. MySQL Ubuntu 14.04 LTS को पूरी तरह से हटा दें

  5. बाहरी php फ़ाइल में Jfactory वर्ग शामिल करें, जूमला