根据其他表格中的值触发插入值

时间:2019-11-18 11:11:19

标签: sql triggers insert

我是创建数据库触发器的新手,但是我无法使第二个触发器正常工作。

在表工作流程中插入新记录时,需要根据表客户端中的城市来调整工作人员。

客户编号是两个表之间的关系值。

这是我到目前为止写的:

CREATE OR REPLACE TRIGGER automatic_workflow
BEFORE INSERT ON workflow
for each row 
when(new.subject='Account' and new.fase=1)
BEGIN
if
(:new.number=client.number) and client.city='Amsterdam' then new.worker ='Bill';
end if;
END;

2 个答案:

答案 0 :(得分:0)

尝试像这样在开始处放置定界符:

DELIMITER //
CREATE OR REPLACE TRIGGER automatic_workflow
BEFORE INSERT ON workflow
for each row 
when(new.subject='Account' and new.fase=1)
BEGIN
if
(:new.number=client.number) and client.city='Amsterdam' then new.worker ='Bill';
end if;
END;
//

答案 1 :(得分:0)

什么是client?触发器中未定义它。

我怀疑您可能想要

CREATE OR REPLACE TRIGGER automatic_workflow
BEFORE INSERT ON workflow
FOR EACH ROW
WHEN (new.subject = 'Account' and new.fase = 1)
BEGIN
    IF EXISTS (SELECT 1
               FROM client c
               WHERE c.number = :new.number and    
                     c.city = 'Amsterdam' 
              ) THEN
        new.worker = 'Bill';
    END IF;
END;