MySQL 5.7, 8.0.12 और पुराने
MySQL 5.7 या 8.0.12 के रूप में किसी फ़ंक्शन या एक्सप्रेशन को कॉलम के डिफ़ॉल्ट मान के रूप में उपयोग करने का समर्थन नहीं करता है।
https://dev.mysql.com/doc /refman/5.7/hi/data-type-defaults.html
विकल्प यह होगा कि BEFORE INSERT
. की निगरानी के लिए ट्रिगर का उपयोग किया जाए वांछित तालिका का।
DELIMITER ;;
CREATE TRIGGER `foo_before_insert`
BEFORE INSERT ON `foo` FOR EACH ROW
BEGIN
IF new.id IS NULL THEN
SET new.id = uuid();
END IF;
END;;
DELIMITER ;
यह INSERT
. का डिफ़ॉल्ट मान बदल देगा uuid()
. को स्टेटमेंट मूल्य, जब तक कि इसे स्पष्ट रूप से परिभाषित नहीं किया गया हो।
MySQL 8.0.13 और नया
MySQL 8.0.13 की रिलीज़ एक व्यंजक को अब डिफ़ॉल्ट मान के रूप में उपयोग किया जा सकता है, बशर्ते वह कोष्ठकों में संलग्न हो।
उदाहरण db<>fiddle
https://dev.mysql.com/doc /refman/8.0/hi/data-type-defaults.html