मुझे लगता है कि आप इसे वापस OLD
में अपडेट करना चाहते हैं पासवर्ड, जब नया प्रदान नहीं किया जाता है।
DROP TRIGGER IF EXISTS upd_user;
DELIMITER $$
CREATE TRIGGER upd_user BEFORE UPDATE ON `user`
FOR EACH ROW BEGIN
IF (NEW.password IS NULL OR NEW.password = '') THEN
SET NEW.password = OLD.password;
ELSE
SET NEW.password = Password(NEW.Password);
END IF;
END$$
DELIMITER ;
हालांकि, इसका मतलब है कि उपयोगकर्ता कभी भी पासवर्ड खाली नहीं कर सकता है।
यदि पासवर्ड फ़ील्ड (पहले से एन्क्रिप्टेड) को mySQL के अपडेट में वापस भेजा जा रहा है, तो यह शून्य या रिक्त नहीं होगा, और MySQL उस पर पासवर्ड () फ़ंक्शन को फिर से करने का प्रयास करेगा। इसका पता लगाने के लिए, इसके बजाय इस कोड का उपयोग करें
DELIMITER $$
CREATE TRIGGER upd_user BEFORE UPDATE ON `user`
FOR EACH ROW BEGIN
IF (NEW.password IS NULL OR NEW.password = '' OR NEW.password = OLD.password) THEN
SET NEW.password = OLD.password;
ELSE
SET NEW.password = Password(NEW.Password);
END IF;
END$$
DELIMITER ;