【发布时间】:2017-02-21 13:40:15
【问题描述】:
我正在尝试在 Oracle 中的表上创建一个插入和更新前触发器。 在尝试阅读 NEW.CLOB_COLUMN_VALUE 时,它给了我空白。
表:
CREATE TABLE TEMP_TEST101
(
ID NUMBER(2),
TEST_CLOB_VALUE CLOB
)
触发器:
CREATE OR REPLACE TRIGGER TR_Temp_Test101
BEFORE INSERT OR UPDATE
ON Temp_Test101 FOR EACH ROW
DECLARE
BEGIN
If (:NEW.TEST_CLOB_VALUE = 'A')
Then
raise_application_error(-20010,'Testing Successfull');
End IF;
raise_application_error(-20010,'Testing Failed:['||:NEW.TEST_CLOB_VALUE||']');
END TR_Temp_Test101;
/
尝试插入后提示:
ORA-20010: Testing Failed:[]
有什么方法可以在插入/更新之前读取:NEW.TEST_CLOB_VALUE?
要求是在插入/更新之前验证CLOB列的数据。
【问题讨论】:
-
这似乎工作正常。 - 插入 A 得到“成功 [A]”,插入 B 得到 [失败 [B]”。您还没有显示您使用的插入语句 - 您尝试插入的实际值是什么?
-
我总是使用 rowid 添加记录。插入查询工作得很好。 : 从 Temp_Test101 t1 中选择 rowid,t1.*
-
感谢您的快速回复和更正。使用 rowid 添加时,提示显示空 []。然而,当使用插入语句时,触发器工作正常。
-
不确定您的意思...您是通过选择现有值来插入的?该查询会为您的表提供太多列...此外,您使用的是哪个版本的 Oracle,以防万一?
-
@AlexPoole。很明显,他试图将一个 clob 与一个字符进行比较。可能存在 clob 有一些空格并且没有得到评估的情况。