今天在做Oracle的缓存策略时,写了个触发器(在网上查找的资料),可以创建成功,可是使用是出现“触发器无效且无法重新确认问题”
以下是主要过程CREATE OR REPLACE TRIGGER
TEST_CACHE_BY_ORACLE_DEPENDNCY AFTER
INSERT
OR UPDATE
OR DELETE ON userinfo
declare file_handle utl_file.file_type;
BEGIN
--打开文件
file_handle := utl_file.file_open('FILEPATH','TextFile.txt','w');
--将当前系统时间写入文件
IF utl_file.is_open(file_handle) THEN
utl_file.put_line(file_handle,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
END IF;
--关闭文件
utl_file.fclose(file_handle);
EXCEPTION
WHEN OTHERS THEN
BEGIN
IF utl_file.is_open(file_handle) THEN
utl_file.fclose(file_handle);
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END;
以下是主要过程CREATE OR REPLACE TRIGGER
TEST_CACHE_BY_ORACLE_DEPENDNCY AFTER
INSERT
OR UPDATE
OR DELETE ON userinfo
declare file_handle utl_file.file_type;
BEGIN
--打开文件
file_handle := utl_file.file_open('FILEPATH','TextFile.txt','w');
--将当前系统时间写入文件
IF utl_file.is_open(file_handle) THEN
utl_file.put_line(file_handle,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
END IF;
--关闭文件
utl_file.fclose(file_handle);
EXCEPTION
WHEN OTHERS THEN
BEGIN
IF utl_file.is_open(file_handle) THEN
utl_file.fclose(file_handle);
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END;
BEGIN
--打开文件
file_handle := utl_file.file_open('FILEPATH','TextFile.txt','w');
--将当前系统时间写入文件
IF utl_file.is_open(file_handle) THEN
utl_file.put_line(file_handle,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'));
END IF;
--关闭文件
utl_file.fclose(file_handle);
EXCEPTION
WHEN OTHERS THEN
BEGIN
IF utl_file.is_open(file_handle) THEN
utl_file.fclose(file_handle);
END IF;
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
END;
注意,FILEPATH 目录对象应该事先创建,且触发器的所有者应该对此目录对象具有“读/写”权限。