2013-11-26 3 views
0

Я пытаюсь создать триггер, чтобы предотвратить пустую строку вставки для столбца cname и значения меньше 7000 и больше, чем 8000 для столбца empno, сделав его нулевым. Вот как я это сделал:Ограничить значение вставки mysql с помощью триггера

delimiter $$ 
CREATE TRIGGER test1 
BEFORE insert 
ON clients 
FOR EACH row BEGIN 
if new.cname = '' THEN 
SET new.cname = null; 
if new.empno <7000 THEN 
SET new.empno = null; 
if new.empno>8000 THEN 
SET new.empno = null; 
end if; 
end if; 
end if; 
end; 

Столбец cname отлично работает. Но empno примет что угодно, и я не могу понять, почему. Мой стол что-то вроде этого:

CREATE TABLE clients 
(
empno  INTEGER  NOT NULL DEFAULT 7654     
cname VARCHAR(20) NOT NULL 
); 

ответ

2

Вы должны установить каждый конец, если после того, как соответствующие, если:

delimiter $$ 
CREATE TRIGGER test1 
BEFORE insert 
ON clients 
FOR EACH row BEGIN 
if new.cname = '' THEN 
SET new.cname = null; 
end if; 
if new.empno <7000 THEN 
SET new.empno = null; 
end if; 
if new.empno>8000 THEN 
SET new.empno = null; 
end if; 
end; 
+0

Теперь она работает как положено. Большое спасибо. – Modaresi

Смежные вопросы