0

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

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

先感谢您。

这是飞机桌

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 ;
4

1 回答 1

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

于 2013-05-01T04:12:22.523 回答