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

mysql का उपयोग कर VARCHAR कॉलम में अंकों का उपयोग कैसे रोकें?

आप CHECK की तलाश कर रहे हैं एसक्यूएल ऑपरेटर। दुर्भाग्य से, यह किसी भी MySQL इंजन द्वारा समर्थित नहीं है।

हालाँकि, SQL ट्रिगर्स का उपयोग करके वर्कअराउंड है। आपको अधिक जानकारी पर अधिक जानकारी मिल सकती है। काम नहीं कर रहा और http://dev.mysql.com/doc/ refman/5.7/hi/create-trigger.html

तो, मेरे लिए (MySQL 5.5+ आवश्यक), निम्नलिखित स्निपेट ने काम किया:

use test;

CREATE TABLE user (
  `user_id` INT NOT NULL,
  `username` VARCHAR(50) NULL,
  PRIMARY KEY (`id`)
);

delimiter //

create trigger trg_trigger_test_ins before insert on user
for each row
begin
    if new.username REGEXP '^[0-9]*$' then
        signal sqlstate '45000' set message_text = 'Invalid username containing only digits';
    end if;
end
//

delimiter ;

insert into user values(1, '1234');

अंतिम INSERT कथन ने एक Error Code: 1644. Invalid username containing only digits जबकि

insert into `test`.`user` values(1, 'a1234');

ठीक से डाला गया था।

एनबी:कुछ यश भी फेंकने के लिए MySQL ट्रिगर में त्रुटि signal . पर विचार।

ध्यान दें कि यह उदाहरण केवल INSERT . से सुरक्षा करता है एस। यदि आप सुरक्षित रहना चाहते हैं, तो आपको UPDATE . पर एक ट्रिगर भी लागू करना होगा ।



  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 अपवाद:किसी भी निर्दिष्ट MySQL होस्ट से कनेक्ट करने में असमर्थ। सी # के माध्यम से

  3. कैसे जेपीए का उपयोग कर मानचित्रण करते समय mysql में एक स्ट्रिंग की लंबाई बढ़ाने के लिए?

  4. Mysql अनुपलब्ध दिनांक सीमाएँ ढूँढें

  5. "ERROR 3942 (HY000) को ठीक करें:MySQL में VALUES स्टेटमेंट का उपयोग करते समय VALUES क्लॉज की प्रत्येक पंक्ति में कम से कम एक कॉलम होना चाहिए"