gpt4 book ai didi

sql - Oracle SQL 触发器 - DBMS_OUTPUT.PUT_LINE

转载 作者:行者123 更新时间:2023-12-02 08:29:56 26 4
gpt4 key购买 nike

我在我的数据库中创建了一个触发器,我遇到了两个我无法修复的错误,我很确定这两个与我对 DBMS_OUTPUT.PUT_LINE 的使用有关, 语句的其余部分不会导致任何错误,尽管它之前有过。

错误:

Error(5,3): PL/SQL: SQL Statement ignored

Error(5,15): PL/SQL: ORA-00903: invalid table name

代码:

CREATE TRIGGER INVOICES
BEFORE INSERT OR UPDATE ON BRUINVOICE
FOR EACH ROW
BEGIN
IF :new.BRU_DATE < :new.BRU_PAID_DATE THEN
DBMS_OUTPUT.PUT_LINE('You cannot do that');
ELSE
INSERT INTO table BRUINVOICE
values
from inserted;
END IF;
END;

最佳答案

在记录级别验证方面,检查约束是比触发器更好的选择(性能方面):

ALTER TABLE bruinvoice
ADD CONSTRAINT validate_bru_date CHECK (BRU_DATE < BRU_PAID_DATE);

插入无效数据将引发如下错误消息:

scott@ORCL> insert into bruinvoice values ('21-DEC-14','20-DEC-14');
insert into bruinvoice values ('21-DEC-14','20-DEC-14')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.VALIDATE_BRU_DATE) violated

关于sql - Oracle SQL 触发器 - DBMS_OUTPUT.PUT_LINE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com