Oracle 扳机坏了

Oracle 扳机坏了,oracle,plsql,oracle11g,syntax-error,Oracle,Plsql,Oracle11g,Syntax Error,我创建了一个触发器,用于检查ads表中的付款,并应该更新另一个表(customer_account),有人知道bug在哪里吗 CREATE OR REPLACE TRIGGER Payment_check after UPDATE ON Ads FOR EACH ROW BEGIN IF NEW.Pay_done==('y'||'Y')THEN UPDATE customer_account SET customer_account.Plcd_ads = NE

我创建了一个触发器,用于检查ads表中的付款,并应该更新另一个表(customer_account),有人知道bug在哪里吗

   CREATE OR REPLACE TRIGGER Payment_check
   after UPDATE ON Ads
   FOR EACH ROW
   BEGIN
   IF NEW.Pay_done==('y'||'Y')THEN
   UPDATE customer_account SET customer_account.Plcd_ads = NEW.Ad_id
   WHERE customer_account.C_id = NEW.Customer;
   ELSE
   UPDATE customer_account SET customer_account.Pend_ads = NEW.Ad_id 
   WHERE customer_account.C_id = NEW.Customer;
   END IF;
   END;


 //////bug

 Error at line 7: PLS-00103: Encountered the symbol "." when expecting one of the                                                                following:

  mod  
  continue current sql execute forall merge
 pipe purge
 The symbol "" was substituted for "." to continue.

5. IF NEW.Pay_done==('y'||'Y')THEN
6. UPDATE customer_account SET customer_account.Plcd_ads = NEW.Ad_id
7. WHERE customer_account.C_id = NEW.Customer;
8. ELSE
9. UPDATE customer_account SET customer_account.Pend_ads = NEW.Ad_id 

还请提供表创建语句,以便很容易再现错误

这里有两个可能的问题。如果这不能修复错误,请更改这些并更新问题

1) 新运算符需要加前缀“:”

2) 检查pay_done标志的条件可以是“upper(:NEW.pay_done)=“Y”


Rajesh Chamarthi感谢您的回复,您的代码也不起作用,但帮助我找到了我的小弟弟。新值和之前缺少的冒号

     IF NEW.Pay_done==('y'||'Y')THEN
     changed for
     IF NEW.Pay_done=('y'||'Y')THEN

还有工作

为什么这个标签是mysql?@Alex-相反,这似乎是一个答案,特别是对另一个据称不起作用的答案的有效改进。
     IF NEW.Pay_done==('y'||'Y')THEN
     changed for
     IF NEW.Pay_done=('y'||'Y')THEN