【发布时间】:2022-01-19 00:31:30
【问题描述】:
CREATE OR REPLACE TRIGGER CLIENTS_DISCOUNT
BEFORE INSERT OR UPDATE
OF DISCOUNT
ON CLIENTS
FOR EACH ROW
BEGIN
IF (NEW.ISACTIVE = 'N')
THEN RAISE_APPLICATION_ERROR
(-20001, 'CUSTOMER IS NOT ACTIVE')
END IF;
END;
示例客户表:
CREATE TABLE clients (ClientID, ClientName, Discount, isActive, PrimarySiteID) AS
SELECT 1, '21st Century Fox', 5, 'Y', 1 FROM DUAL UNION ALL
SELECT 2, 'Erikson', 10, 'N', 2 FROM DUAL UNION ALL
SELECT 3, 'It Smart Group', 5, 'Y', 3 FROM DUAL UNION ALL
SELECT 4, 'UPC', 5, 'N', 4 FROM DUAL UNION ALL
SELECT 5, 'Telekom', 15, 'Y', 5 FROM DUAL UNION ALL
SELECT 6, 'ExxonMobil', 10, 'N', 6 FROM DUAL UNION ALL
SELECT 7, 'Biolife Grup', 20, 'Y', 7 FROM DUAL UNION ALL
SELECT 8, 'Apple Inc.', 0, 'N', 8 FROM DUAL UNION ALL
SELECT 9, 'AECOM', 5, 'Y', 9 FROM DUAL UNION ALL
SELECT 10, 'Metro', 10, 'N', 10 FROM DUAL;
我想在插入或更新触发器之前创建一个 PL/SQL,以限制不活跃的客户更新他们的折扣。我不确定我是否需要声明一些东西。
【问题讨论】:
-
好的。伟大的。你有什么尝试? MySQL 不是甲骨文。您在标题中提到了 PL/SQL,即 Oracle。你指的是哪个数据库?删除不正确的标签。
-
我正在使用 oracle,我正在尝试确定是否需要声明某些内容。
-
请不要发布图片链接。人们不会打开它们。以文本/表格或数据库 DDL 语句的形式发布问题。您还需要显示 DISCOUNT 表的 DDL。
-
感谢您的建议,这里很新!希望现在好多了