我使用以下脚本在我的oracle11g数据库中创建了一个新表。
CREATE TABLE TEST_TABLE
(
test_number NUMBER,
test_name VARCHAR2(100),
test_system NUMBER,
isEnabled CHAR(1),
createdby NUMBER,
created DATE,
modifiedby NUMBER,
modified DATE,
comments VARCHAR2(150),
hasAgenda CHAR(1),
hasValue CHAR(1),
resumee VARCHAR2(50),
images VARCHAR2(100),
hasOptions CHAR(1),
isRecorded CHAR(1),
isSaved CHAR(1),
valueType VARCHAR2(10)
);
然后,我尝试使用以下脚本插入一个记录:
INSERT INTO TEST_TABLE
(test_number, test_name, test_system, isEnabled, createdby,
created, modifiedby, modified, comments, hasAgenda,
hasValue, resumee, images, hasOptions, isRecorded,
isSaved, valueType)
VALUES(
1, 'name', 2, 'Y', 3,
SYSDATE, 4, SYSDATE, 'obs', 'Y',
'Y', 'resumee', 'images', 'Y', 'Y',
'N', 'value'
);
运行insert语句时,收到以下错误:
ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot drop index used for enforcement of unique/primary key
当没有定义索引或约束时,我不明白为什么会收到这个错误。也没有与表关联的触发器。
有什么建议吗?
提前谢谢。
1条答案
按热度按时间whhtz7ly1#
错误
ORA-00604
是一个常见的错误,有时很难解决。ora-00604在处理递归sql语句时发生。递归sql语句是应用于内部字典表(或触发器中您自己的表)的语句。
所以应该有一种情况触发了对内部目录表的访问。
您应该首先检查可能影响您的现有ddl或系统触发器。
其他原因可能是由于新行而编译的pl/sql无效。
由于有许多可能的错误原因,oracle只是指示堆栈中的下一个错误。
如果您有权访问服务器,可以考虑跟踪会话:
您可以在diag目录$oracle\u base/diag/rdbms/<db\u name>/<instace\u name>/trace下用以下名称标识跟踪文件:
看看那个文件,你可能会发现错误的来源。