如何解决创建触发器,但出现未知列错误 if语句有问题吗?
我正在尝试创建一个触发器,如果“ m_name”为NULL,则在插入一行后将其触发以将“ m_name”更新为“ NOT GIVEN”。但是我得到错误未知列错误。同样在我的查询中,是否需要else语句?我认为是这样,因为如果m_name!= null,请保持m_name不变。对于sql来说很新,很感谢您的帮助。
解决方法
我看不到触发点。列上的default
值几乎可以满足您的要求:
create table members (
mem_id integer not null primary key,f_name varchar(20) not null,m_name varchar(20) not null default 'NOT GIVEN',l_name varchar(20) not null,dob date
);
然后,插入时有两个选项。
您要么不传递插入列:
insert into members(mem_id,f_name,l_name,dob)
values (1,'myName','lastName',current_date)
或者您可以使用default
:
insert into members(mem_id,m_name,default,current_date);
如果您确实希望能够提供一个显式null
进行插入,并在这种情况下指定默认值,则可能需要一个触发器。我建议使用before insert
触发器,因此您可以在写入默认值之前直接设置它:
delimiter //
create trigger members_no_m_name
before insert on members
for each row
begin
if new.m_name is null
then set new.m_name = 'NOT GIVEN';
end if;
end//
delimiter ;
,
您不需要这种情况。
但是您只需要使用my_func2
而不使用median
但是您需要在该列之前使用NEW来引用该列。
NEW是一个伪行,顾名思义就是要输入的所有新数据
df
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。