Sql 这些触发错误意味着什么
嘿,伙计们,谢谢你们早些时候的帮助。我现在遇到了一个新问题。几步之后,在我的家庭作业中,我需要为这个触发器添加一个额外的部分。触发器需要从副本数中减去一个。当副本数达到0时,应显示不可用。在过去的几个小时里,我一直在努力想办法,这就是我想到的。任何帮助或建议都将不胜感激Sql 这些触发错误意味着什么,sql,database,oracle,triggers,Sql,Database,Oracle,Triggers,嘿,伙计们,谢谢你们早些时候的帮助。我现在遇到了一个新问题。几步之后,在我的家庭作业中,我需要为这个触发器添加一个额外的部分。触发器需要从副本数中减去一个。当副本数达到0时,应显示不可用。在过去的几个小时里,我一直在努力想办法,这就是我想到的。任何帮助或建议都将不胜感激 CREATE or REPLACE Trigger Unavailable_Rule BEFORE INSERT ON Transaction FOR EACH ROW BEGIN IF :new.Date_Rente
CREATE or REPLACE Trigger Unavailable_Rule
BEFORE INSERT ON Transaction
FOR EACH ROW
BEGIN
IF :new.Date_Rented_Out is not null AND :new.Date_Returned is NULL AND Num_Copies=1
THEN
UPDATE Video
set Num_Copies = Num_Copies - 1,
Status = 'Unavailable'
where Vid_Num = :new.Vid_Num;
ELSE
Num_Copies = Num_Copies - 1;
End IF;
END;
/
show errors;
6/4 PL/SQL: SQL Statement ignored
7/15 PL/SQL: ORA-00971: missing SET keyword
13/13 PLS-00103: Encountered the symbol "=" when expecting one of the f ollowing: := . ( @ % ;
14/2 PLS-00103: Encountered the symbol "END"
您的
update
语句格式不正确。而不是:
UPDATE Video
Num_Copies = Num_Copies -1
set Status = 'Unavailable'
where Vid_Num = :new.Vid_Num;
在集合中分配Num\u拷贝数
:
UPDATE Video
set Num_Copies = Num_Copies - 1,
Status = 'Unavailable'
where Vid_Num = :new.Vid_Num;
编辑:
您的if
语句可以替换为:
UPDATE Video
set Num_Copies = Num_Copies - 1,
Status = (case when :new.Date_Rented_Out is not null AND :new.Date_Returned is NULL AND Num_Copies = 1 then 'Unavailable'
else status
end)
where Vid_Num = :new.Vid_Num;
感谢您将错误范围缩小到这两个方面:13/13 PLS-00103:在期待以下其中一个时遇到符号“=”:=。(@%;14/2 PLS-00103:遇到符号“结束”“Num_Copies=Num_Copies-1;”您是否需要此处更新stmt的其余部分?更新视频集Num_Copies=Num_Copies-1,其中Vid_Num=:new.Vid_Num;9/3 PL/SQL:SQL语句忽略了11/3 PL/SQL:ORA-01747:无效的user.table.column、table.column或co-column规范这是我要做的got@BS123 . 是的,你需要一个更新声明。