我在要建立的数据库中放入触发器时遇到了问题。它是数据库中的唯一触发器。这是正在使用的两个表。
客户表
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 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-字段列表中的未知表“客户端”
因此,根据我最近几个小时的了解,当您将“`”(反引号)放在变量或表名上时,通常会发生此错误,MySQL认为该条目是字段列表或其他内容的一部分沿着那条线。因此,我将触发器本身更改为仅是“客户端”,但仍然出现错误。删除了旧数据库和所有内容。还有一件事,如果尚未输入触发器,则insert语句本身会起作用。
任何帮助将不胜感激!谢谢!