您好我需要编写一个触发器来检查该值是否存在于列中,如果是,则不要插入它并通过和错误。 有一列只能有两个值(与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;
答案 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”,而不是你在创建表时定义的默认值。