आप 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
. पर एक ट्रिगर भी लागू करना होगा ।