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

MYSQL:अगर OR कंडीशन और REGEXP मैच हो रहा है

अंत में बहुत सारी संभावनाओं को डिबग करने और SO उत्तरों को खोदने के बाद ट्रिगर का अंतिम और सही संस्करण मिला। एक त्वरित प्रतिक्रिया की उम्मीद कर रहा था क्योंकि ऐसा नहीं था कि एससीआई-एफआई सवाल था कि अन्य डेवलपर्स क्रैक करने में असमर्थ थे।

गलती 1 :ENDIF . के बीच की जगह . यह END IF . होना चाहिए ।

गलती 2 :अनुपलब्ध new.column ट्रिगर परिभाषा से;

सही संस्करण :

CREATE TRIGGER `trg_contact_insert_profanity_check` BEFORE INSERT ON `contacts`
 FOR EACH ROW BEGIN
IF ((new.email IN (SELECT word FROM profanity)) OR (new.message
 IN (SELECT word FROM profanity)) OR (new.message REGEXP '/(http|https|ftp|ftps)?(://)?[a-zA-Z0-9-.]+.[a-zA-Z]{2,3}(/S*)?/' ))
THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = "Database Error: BAD REQUEST";
END IF;
END



  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 INSERT/UPDATE कथन तैयार करना

  2. डेटाग्रिडव्यू को MySQL डेटा से भरें

  3. MySQL के साथ खोजने में समस्या

  4. मैसकल में नेस्टेड कर्सर

  5. Mysql-utilities से कुछ भी नहीं चला सकता:mysql.utilities.common.tools . नाम का कोई मॉड्यूल नहीं है