2014-01-29 3 views
-1

Привет, Мне нужно написать триггер, чтобы проверить, существует ли значение в столбце, если да, то не вставляйте его и не начинайте с ошибок. Существует столбец, который может иметь только два значения (то же самое, что и bool) DEFAULT или NONDEFAULT.Триггер перед вставкой

Этот столбец может иметь несколько значений NONDEFAULT, но только одно значение DEFAULT в столбце.

Если DEFAULT существует в таблице, мы должны пройти через ошибку и не должны вставлять новую строку.

Просьба помочь

create trigger status_value before insert on TABLE for each row 
begin 
if new.status=DEFAULT AND select count(status) from TABLE where status=DEFAULT) 
then 
signal sqlstate = '4500' 
set message_text = 'can not update, default value already present' 
end if; 
end; 

ответ

1

Попробуйте так:

delimiter $$ 
create trigger status_value before insert on TABLE for each row 
begin 
if (new.status='DEFAULT' AND EXISTS (select 1 from TABLE where status='DEFAULT')) 
then 
signal sqlstate = '4500' 
set message_text = 'can not update, default value already present'; 
end if; 
end $$ 
delimiter ; 

Я предполагаю, что вы имеете в виду значение столбца является строка «по умолчанию», а не значение по умолчанию вам определенные при создании таблицы.

+0

спасибо, что это сработало .. :) – Ashutosh

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