插入前触发

时间:2014-01-29 11:30:02

标签: mysql

您好我需要编写一个触发器来检查该值是否存在于列中,如果是,则不要插入它并通过和错误。 有一列只能有两个值(与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 个答案:

答案 0 :(得分: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 ;

我假设,你的意思是列的值是一个字符串“default”,而不是你在创建表时定义的默认值。