2013-10-07 4 views
0

У меня есть таблица в базе данных emppersonal empdetails ..триггер не работает в MySQL

я создал триггер

use empdetails; 

delimiter $$ 
create trigger `newtirger` after insert on `emppersonal` 
for each row begin 
if new.mobile = null 
then 
update emppersonal set mobile = '121'; 
end if; 
end $$; 

мой сценарий во время вставки запроса, если столбец чернь, имеющий нулевой затем вставить 121 в мобильном поле.

insert into emppersonal(empname,empadddress,mobile,empdob) values('lop1wde','n1agar',null,null) ; 

, но спусковой крючок не показывает мне никаких ошибок, а также его не работает, пожалуйста, помогите.

+0

Не должно быть 'если new.mobile IS NULL', а не' = NULL'? http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html –

+0

null не равно другому значению null –

+0

эй я получил решение использовать empdetails; разделителя $$ создать триггер 'newtirger' перед тем вставкой на' emppersonal' для каждой строки начинается если new.mobile является NULL того множества new.mobile = '121'; end if; end $$; – user2380844

ответ

0

Лучшим способом обновления пустого значения будет использование значения по умолчанию для столбца. Таким образом, он будет автоматически установлен, если null.

ALTER TABLE emppersonal 
CHANGE mobile mobile VARCHAR(50) NOT NULL DEFAULT '121'; 

, если это невозможно, то попробуйте

delimiter $$ 
create trigger `newtrigger` before insert on emppersonal 
for each row begin 
    set NEW.mobile = if(OLD.mobile IS NULL, '121', OLD.mobile); 
end 
$$ 
+0

я пробовал как выше не работает – user2380844

+0

@ user2380844: Используйте 'is null'. Я пропустил это. –

+0

Я использую только null, показывая мне Код ошибки: 1442. Невозможно обновить таблицу «emppersonal» в хранимой функции/триггере, потому что она уже используется оператором, который вызывал эту сохраненную функцию/триггер. – user2380844

0

попробовать

use empdetails; 

delimiter $$ 
create trigger `newtirger` after insert on `emppersonal` 
for each row begin 
if new.mobile IS NULL 
then 
--modify this line update emppersonal set mobile = '121'; 
update emppersonal set mobile = '121'; 
end if; 
end $$; 
+0

Код ошибки: 1442. Can ' t обновить таблицу «emppersonal» в хранимой функции/триггере, потому что она уже используется оператором, который вызывал эту хранимую функцию/триггер. показывая мне эту ошибку – user2380844

+0

, если new.mobile IS NULL Является ли утверждение истинным – sunysen

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