【问题标题】:Trigger insert in Oracle 10 gOracle 10 g 中的触发器插入
【发布时间】:2017-10-28 05:02:53
【问题描述】:

这是我在投标表中输入数据的代码,其中项目 ID 作为其属性。有一个表项目也有项目 ID 作为它的属性。我已经做了这个触发器来输入数据,只有当项目没有售出时。

CREATE OR REPLACE TRIGGER TIG FOR BIDS FOR EACH    ROW 
DECLARE
N_CNT NUMBER (1);
BEGIN
    SELECT COUNT(*) 
      INTO N_CNT 
    FROM ITEM 
    WHERE ITEM_ID = :NEW.ITEM_ID 
      AND ITEM.STATUS='SOLD';

  IF N_CNT=1 THEN
     DBMS_OUTPUT.PUT_LINE('ALREADY SOLD');
  END IF;
END;

它给出了错误

Pl/SQL :line 4:SQL 语句被忽略。即开始

【问题讨论】:

  • FOR BIDS 应该类似于before insert on bids 部分在触发器声明中。
  • 我试过但没有效果
  • 您尝试过什么,“没有效果”是什么意思?如果您收到任何错误,请显示您尝试过的代码和错误
  • 在插入每行投标前创建或替换触发 TIG 声明 N_CNT 编号 (1); BEGIN SELECT COUNT(*) INTO N_CNT FROM ITEM WHERE ITEM_ID = :NEW.ITEM_ID AND ITEM.STATUS='SOLD';如果 N_CNT=1 那么 DBMS_OUTPUT.PUT_LINE('ALREADY SOLD');万一;结束;
  • 你说没有效果是什么意思?当我尝试时,它编译得很好。

标签: oracle plsql database-trigger


【解决方案1】:

创建或替换触发 TIG 在插入之前每行出价

或之后而不是之前

或更新,删除而不是插入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-11
    • 2021-08-25
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多