MYSQL更新表触发器

时间:2013-05-01 04:04:33

标签: mysql eventtrigger triggers

这只是一个简单的问题,我很抱歉,如果它很简单,但我找不到任何好的例子,因为我确信它不是那么难,我只是不确定语法。

我需要更新一个表'飞机'中的状态属性,当有人将飞机插入一个名为服务的表中时,他们也会设置状态,说'不活动'我需要它来对应另一个表。我觉得这应该很容易,但现在已经挣扎了一段时间。

提前谢谢你。

这是飞机表

Create Table Airplane(
    Name    Char(25)    NOT NULL,
    aID     Int NOT NULL Primary Key,
    aCount  Int,
    status  Char(8) NOT NULL DEFAULT 'Active',
    cost    double Default 0.0
);

这是服务表,它们可能会发生变化,只是针对所有密集目的专注于此触发器。

Create table Servicing( 
 TicketNumber Int  NOT NULL AUTO_INCREMENT Primary Key,
 Mechanic  Char(50) NOT NULL,
 Problem   Char(25) NOT NULL,
 Airplane  Char(25) NOT NULL,
 TimeComplete CHAR(25) NOT NULL,
 Servicing  Char(25) NOT NULL,
 Status   Char(25) NOT NULL DEFAULT 'Inactive');

这是触发器,但似乎遇到了问题。

DELIMITER $$
CREATE TRIGGER Airplane_status_update 
AFTER INSERT ON Servicing
FOR EACH ROW
BEGIN
UPDATE Airplane status 
   SET status = new.status
 WHERE name = new.airplane;
END $$
DELIMITER ;

1 个答案:

答案 0 :(得分:1)

你可能正在寻找像这样的东西

DELIMITER $$
CREATE TRIGGER airplane_status_update 
AFTER INSERT ON servicing
FOR EACH ROW
BEGIN
UPDATE airplane 
   SET status = NEW.status
 WHERE airplane_id = NEW.airplane_id;
END $$
DELIMITER ;

您显然需要调整指定正确字段名称的UPDATE语句,因为您没有为服务和飞机表发布DDL