我正在尝试写这个触发器,但它不能正常工作。我有一张桌子给(捐助者,接收者,礼物名)和一个桌子人(姓名,年龄,头发颜色)。对于触发器,我希望它在捐助者和接收者具有相同的头发颜色时吐出消息。琐碎,我知道,但我刚刚开始学习触发器,并完全停留在为什么这不起作用。谢谢。Oracle触发器简单SQL
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;
该错误消息我得到的是错误的执行过程中“精确获取回报超过行的请求数量”,指着下面申报行...?
谢谢,这解决了我的问题,我可以运行插入,但我没有看到DBMS_output.put_line。我是一名运行oracle sql developer的新手,但我设置了服务器输出,我认为这可以解决我的问题? – user1657563
您是否在SQL-Developer中激活“DBMS输出”?它是否显示你在不同的块中产生的消息,而不是触发器中的消息? –
是启用,但不显示来自dbms_output.put_line的消息。 – user1657563