Plsql 如何在变量中存储已删除的值?
当我从表中删除名为“Categorie”的行时。我希望在变量中删除naam记录。这样我就可以将“Economie”(参见代码)更改为已删除的变量。因此,我可以使用已删除的类别构建字符串 范例 如果我的桌子计数:Plsql 如何在变量中存储已删除的值?,plsql,Plsql,当我从表中删除名为“Categorie”的行时。我希望在变量中删除naam记录。这样我就可以将“Economie”(参见代码)更改为已删除的变量。因此,我可以使用已删除的类别构建字符串 范例 如果我的桌子计数: 运动鞋 经济舱 宾内兰奥姆施里金酒店 建筑用地 我删除了行sport,我想将值sport存储在删除的变量中 我现在得到的结果是: 邮件:verstuurd naarKlaas@test.nl如果你是克劳斯·瓦克,那么你的选择是属于经济范畴的 我想要的结果是: 邮件:verstuurd
- 运动鞋
- 经济舱
- 宾内兰奥姆施里金酒店
- 建筑用地
CREATE TABLE Categorie
(
naam VARCHAR2(64) PRIMARY KEY,
omschrijving VARCHAR2(2048)
);
CREATE or REPLACE TRIGGER Verwijdercategorie
before Delete
ON Categorie
DECLARE
categorieinvoer varchar2(30);
PROCEDURE gebruiker (categorienaam varchar2)
AS
voornamtemp varchar2(30);
achternaamtemp varchar2(30);
emailadresstemp varchar2(30);
bodyText varchar2(300);
categorie varchar(30):= categorienaam;
CURSOR emp_cursor IS
SELECT VOORNAAM, ACHTERNAAM,EMAILADRES from mailabonnee,categorieabonnement,categorie
where categorie.naam = categorieabonnement.categorienaam
and categorieabonnement.mailabonneeid = mailabonnee.id
and categorie.naam = categorie;
BEGIN
FOR employee_rec IN emp_cursor LOOP
voornamtemp:= employee_rec.VOORNAAM;
achternaamtemp:= employee_rec.ACHTERNAAM;
emailadresstemp:= employee_rec.EMAILADRES;
bodyText:= 'Beste ' || voornamtemp || ' ' || achternaamtemp || ' , uw abonnement is
opgeheven voor Categorie ' || categorienaam;
sendMailAbonnee(bodyText,emailadresstemp);
end loop;
END gebruiker;
begin
categorieinvoer:= 'Economie'; -- Value that need to be changed;
gebruiker(categorieinvoer);
end Verwijdercategorie;
支持这一点的常用技术是使用位标志,例如
Deleted
,以指示当设置true
时记录已被删除(或者相反,当设置true
时,活动标志指示记录未被删除)。如果同时使用审核字段,则可以跟踪更改位标志值的人
当然,这会增加您编写的访问此表的查询的复杂性,因为它们必须添加一个过滤器:…其中DELETED=FALSE
或…其中ACTIVE=TRUE
另一种技术是在需要维护已删除值的表上使用所谓的“历史”表。这些历史记录表的结构与常规表相同,当从常规表中删除记录时,它将插入到该表的历史记录表中。在触发器的主体中,我认为您应该替换
categorieinvoer := 'Economie';
与
试试看
分享和享受。当我在sql developer Bob Jarvis中尝试您的代码时,我得到了以下绑定信息。我做错了什么![BINDS][1][1]:NVM我已经找到了我的错误,因为我试图更改光标中的一个选项卡,这就是我收到错误消息的原因。
categorieinvoer := :OLD.NAAM;