MySQL触发器-触发器表名称解释为字段

MySQL触发器-触发器表名称解释为字段,mysql,triggers,Mysql,Triggers,我在建立数据库时遇到了一个触发器问题。它是数据库中唯一的触发器。这是正在使用的两张桌子 客户表 create table client ( clientNum INT(5) not null auto_increment, clientName TEXT(30) not null, clientEmail VARCHAR(64) not null, clientGender CHAR(1) not null, clientDOB DATE not null

我在建立数据库时遇到了一个触发器问题。它是数据库中唯一的触发器。这是正在使用的两张桌子

客户表

create table client (
    clientNum INT(5) not null auto_increment,
    clientName TEXT(30) not null,
    clientEmail VARCHAR(64) not null,
    clientGender CHAR(1) not null,
    clientDOB DATE not null,
    clientAddress TEXT(50),
    clientPhone VARCHAR(12) not null,
    hasInsurance CHAR(1) not null,
    clientBalanceOwed DECIMAL(10,2),
    clientLastDateVisited DATE,
    clientNextVisitDate DATE,
    primary key (clientNum));
保险表

create table insurance(
    insuranceNum INT(5) not null auto_increment,
    cardNum INT(16),
    policyNum INT(6),
    policyHolder TEXT(30),
    clientNum INT(5),
    primary key (insuranceNum),
    foreign key (clientNum) references client(clientNum));
以下触发器的想法是仅在将客户机添加到“hasInsurance”字段设置为“y”的数据库时创建保险行。然后,添加该客户机后,创建一个新的保险行,将clientNum设置为刚才添加的clientNum

扳机

delimiter $$
create trigger New_Insurance_Row after insert on client
for each row
begin
if(client.hasInsurance = 'y') then
insert into insurance (clientNum) values (NEW.clientNum);
end if;
end$$
在尝试将新客户机插入到表中并调用触发器之前,到目前为止,所有操作都按预期进行。一旦我尝试添加以下代码行:

Insert语句

insert into client(clientName, clientEmail, clientGender, clientDOB, 
clientAddress,
clientPhone, hasInsurance, clientBalanceOwed, clientLastDateVisited, 
clientNextVisitDate)
values
('Darcy Watts','dwatts@email.com','m','1996-5-9','Belfast, Charlottetown 
PEI','123-222-3333','y','400.77','2017-8-12','2019-9-6');
当我尝试运行此操作时,遇到以下错误:

#1109-字段列表中的未知表“客户端”

从过去几个小时我所了解到的情况来看,当您在变量或表名上加上“`”(backtick)时,通常会发生这种错误,MySQL认为该条目是字段列表的一部分,或者是类似的内容。因此,我将触发器更改为“客户机”,但仍然出现了一个错误。删除了旧数据库和所有东西。还有一件事,如果尚未输入触发器,insert语句本身就可以工作


任何帮助都将不胜感激!谢谢

我想你的
hassurance
应该来自
new
记录

...
if(new.hasInsurance = 'y') then
insert into insurance (clientNum) values (NEW.clientNum);
end if;
...
--


(提供人)

是的,这确实是问题所在。。。请随意加入。好的,我会试试看它是否有效。编辑:成功了!多谢了,我被困在这上面太久了。