【发布时间】:2021-03-19 03:57:53
【问题描述】:
我有触发器,在添加或删除时改变总数;
CREATE OR REPLACE TRIGGER branch_number_change
AFTER UPDATE ON Branch
FOR EACH ROW
BEGIN
IF Staff.inserting
THEN
UPDATE branchTotalStaffNumber
SET branchTotalStaffNumber = branchTotalStaffNumber + 1
WHERE branchNo = old.branchNo;
END IF;
IF Staff.deleting
THEN
UPDATE branchTotalStaffNumber
SET branchTotalStaffNumber = branchTotalStaffNumber - 1
WHERE branchNo = old.branchNo;
END IF;
END;
当我运行 sql 命令时,它会给出很多错误,并且不会将第二个 end if 部分添加到触发器中。问题出在哪里?
这是错误;
从第 65 行开始的错误命令 -
更新 branchTotalStaffNumber
SET branchTotalStaffNumber = branchTotalStaffNumber - 1
WHERE branchNo = old.branchNo
命令行错误:65 列:13
错误报告 - SQL 错误:ORA-00942: tablo veya görüntü mevcut 德吉尔
00000 - “表或视图不存在”
*原因:
*行动:
从第 68 行开始的错误命令 - END IF 错误报告 -
未知命令
如果你能帮忙,我会很高兴!
【问题讨论】:
-
欢迎来到 SO! “很多错误”对我们没有多大帮助,请发布实际的错误消息。
-
我添加了实际错误
-
这看起来很像“zeynep”刚刚在stackoverflow.com/questions/65187312/… 发布的问题。你在同一门课上,做同样的作业吗?我会回应他得到的回应(mathguy在那里打败了我)。您根本不应该存储“totalstaffnumber”。基本规则,不要存储在运行时容易计算的内容。我从事这项业务将近 40 年,可以向您保证,如果您这样做,储值将与现实不同步。
-
@EdStevens 显然我们可能在同一门课程中。谢谢你的回答!
-
每当我看到两个关于同一个查询的帖子时,我的第一个想法是“这两个家伙在同一个班级做同一个作业问题,我的第二个想法是”他们为什么不说话互相帮助/互相帮助?”