0
嗨,我有3个触发器,我无法编译,我会appriciate一些帮助,因为我不能解决它。 1)我在PL/SQL中有这张表 - 解决方案是这篇文章下的第一条评论!PL/SQL中没有工作变量
CREATE TABLE Personel_Project (
ProjectID INT,
PersonID INT,
FOREIGN KEY (ProjectID) REFERENCES Project(ProjectID),
FOREIGN KEY (PersonID) REFERENCES Personel(PersonID)
);/
而这个触发不会工作,即时通讯几乎可以肯定它是与名字的声明。
CREATE OR REPLACE TRIGGER peopleInProjects
AFTER DELETE OR INSERT OR UPDATE ON Personel_Project
FOR EACH ROW
DECLARE
projectnumber NUMBER := :new.ProjectID;
peoplecount NUMBER;
BEGIN
Select INTO peoplecount Count(PersonID) FROM Personel_Project Group by projectnumber;
dbms_output.put_line('ID of project: ' || projectnumber);
dbms_output.put_line('number of people working in this project: ' || peoplecount);
END;
/
即时得到这个错误 错误(4,5):PL/SQL:忽略
这触发背后的想法是,它启动时,有人在编辑这个数据库表的SQL语句,并我们可以看到有多少人在我们刚刚编辑的这个项目中工作。
2)
CREATE TABLE Project (
ProjectID INT PRIMARY KEY,
Name VARCHAR(255),
Due_date DATE,
Cost INT,
Payout INT
);
有了这张表我是越来越当我试图打电话给在表中的更改的错误:new.DUE_DATE现在随着即时通讯:DUE_DATE。无法前进
CREATE OR REPLACE TRIGGER showChange
BEFORE
INSERT OR
UPDATE OF DUE_DATE, COST, PAYOUT OR
DELETE
ON PROJECT
BEGIN
CASE
WHEN INSERTING THEN
DBMS_OUTPUT.PUT_LINE('you put in this information' || :DUE_DATE || :COST || :PAYOUT);
WHEN UPDATING('Due_date') THEN
DBMS_OUTPUT.PUT_LINE('you updated due date to be' || :DUE_DATE);
WHEN UPDATING('Cost') THEN
DBMS_OUTPUT.PUT_LINE('you updated cost to be' || :COST);
WHEN UPDATING('Payout') THEN
DBMS_OUTPUT.PUT_LINE('you updated Payout to be' || :PAYOUT);
WHEN DELETING THEN
DBMS_OUTPUT.PUT_LINE('You deleted the project');
END CASE;
END;
/
我会真正appriciate我可以得到的所有帮助。谢谢!
看起来像只是一个语法错误。 '选择计数(PersonID)INTO peoplecount'。 –
好吧,这对于第一个作品:D 谢谢 – QuietDaniel