只是在创建一个小触发器。我想要这个触发器做的是确保一个客户在当前时间只能在下订单表中有 10 个订单。不要问我的客户为什么想要这个,这对我来说似乎很愚蠢哈。
但基本上触发器是在下订单表上,我目前在 customer_ID 上选择 DISTINCT COUNT 并将其放入 v_count VARIABLE。
IF v_count < 10 INSERT INTO placed_order
ELSE
DBMS_OUTPUT.PUT_LINE ('you have 10 or more orders processing please wait')
END if
END
这是代码的基本要点,但它不会运行如果有人愿意,我可以显示完整的代码吗?
这是代码 - 抱歉,我现在不知道如何使用 SQLFiddle。
CREATE OR REPLACE TRIGGER trg_order_limit
BEFORE INSERT
ON placed_order
FOR EACH ROW
DECLARE
v_count number;
BEGIN
SELECT COUNT(DISTINCT FK1_customer_id) FROM placed_order into v_count;
if v_count < 10 then
INSERT INTO placed_order
(order_id, order_date, delivery_date, FK1_customer_id, FK2_employee_id, FK3_Order_type_id)
VALUES
(:NEW.order_id, :NEW.order_date, :NEW.delivery_date, :NEW.FK1_customer_id, :NEW.FK2employee_id, :NEW.FK3_order_type_id);
ELSE
v_count > 10 then
DBMS_OUTPUT.PUT_LINE('You currently have 10 or more orders processing.');
end if;
end;
当我在 oracle 中运行脚本时,在第 4 行出现错误:PL/SQL: ORA-00933: SQL 命令未正确结束
非常感谢理查德