plsql - PL/SQL 触发器修改新插入的数据
问题描述
下面的所有命令都按照我编写它们的顺序彼此分开执行:
所以这是我的桌子:
CREATE TABLE clase (
clasa VARCHAR2(20) PRIMARY KEY,
tip VARCHAR2(2) NOT NULL,
tara varchar(30) NOT NULL,
nr_arme NUMBER(3, 0) NOT NULL,
diametru_tun NUMBER(3,0) NOT NULL,
deplasament NUMBER(6, 0) NOT NULL,
CONSTRAINT chk_diam_tun CHECK ((diametru_tun > 15 AND nr_arme < 10) OR diametru_tun <= 15)
);
创作没有任何错误并且完美地工作。下一步是创建一个触发器,如果 deplasment的值低于 10000 ,则检查插入,并自动将其更改为 10000。
CREATE OR REPLACE TRIGGER t_clase_insert
BEFORE INSERT OR UPDATE ON clase
FOR EACH ROW
BEGIN
IF(:NEW.deplasament < 10000) THEN
:NEW.deplasament := 10000;
END IF;
END;
它编译触发器没有错误。接下来我用代码测试触发器:
INSERT INTO clase
(clasa, tip, tara, nr_arme, diametru_tun, deplasament)
VALUES
('My_class', 'mc', 'Europe', 10, 3, 8000);
输出是:
ORA-04098: trigger 'DATABASEFORSCHOOL.CLASA_ADAUGARE' is invalid and failed re-validation
我试图看看这是否是语法错误:
select *
from
user_errors
where
type = 'TRIGGER'
and
name = 't_clase_insert';
但没有找到数据。有谁理解为什么触发器不起作用以及为什么我不能插入数据?
解决方案
推荐阅读
- nrf52 - OpenThread API:未定义对 otThreadGetMaxAllowedChildren() 的引用
- javascript - Javascript - 从对象数组中读取值的复选框
- sql-server - 我无法从 sql server 2014 连接到我的数据库或主机
- html - 有没有办法让 3 个表单元素排成一行?
- javascript - 带有分页的下一个和上一个按钮功能
- python - 如何在当前选项卡的文本小部件中插入文本?
- jquery - 无法重新加载数据表
- variables - 如何从 terraform variable.tf 文件中的另一个变量创建一个变量?
- python - 如何在django中获取登录用户的数据
- angular - 将角度组件添加到非角度第三方组件