我正在尝试编写此触发器,但它无法正常工作。我有一张 GIVING 表(捐赠者、接收者、礼物名称)和一张 PERSONS 表(pname、年龄、头发颜色)。对于触发器,我希望它在捐赠者和接收者的头发颜色相同时吐出一条消息。微不足道,我知道,但我刚刚开始学习触发器并且完全坚持为什么这不起作用。谢谢。
create or replace TRIGGER SameHairColor
BEFORE INSERT OR UPDATE OF GIFTNAME ON GIVING
DECLARE
haircolordonor varchar(255);
haircolorreceiver varchar(255);
BEGIN
select persons.haircolor into haircolordonor
from persons, giving
where (donor = persons.pname);
select persons.haircolor into haircolorreceiver
from persons, giving
where (receiver = persons.pname);
if (haircolordonor = haircolorreceiver) then
dbms_output.put_line('Wow, they have the same haircolor! Who would have thought?');
end if;
end;
我收到的错误消息是执行期间错误“精确提取返回的行数超过请求的行数”,指向 DECLARE ... 下面的行?