单独在pl/sql运行语句就可以:
DECLARE
BEGIN
EXECUTE IMMEDIATE 'alter table bale_info disable primary key cascade';
EXECUTE IMMEDIATE 'alter table bale_info ENABLE primary KEY';
END;
但是写在触发器里,当触发时就报错:
ora-04092:cannot commit in a trigger触发器:
CREATE OR REPLACE TRIGGER tri_del_type
BEFORE DELETE
ON bale_type_info
FOR EACH ROW
DECLARE
BEGIN
EXECUTE IMMEDIATE 'alter table bale_info disable primary key cascade';
DELETE FROM bale_info t WHERE t.type_id=:old.type_id;
EXECUTE IMMEDIATE 'alter table bale_info ENABLE primary KEY';
END;
DECLARE
BEGIN
EXECUTE IMMEDIATE 'alter table bale_info disable primary key cascade';
EXECUTE IMMEDIATE 'alter table bale_info ENABLE primary KEY';
END;
但是写在触发器里,当触发时就报错:
ora-04092:cannot commit in a trigger触发器:
CREATE OR REPLACE TRIGGER tri_del_type
BEFORE DELETE
ON bale_type_info
FOR EACH ROW
DECLARE
BEGIN
EXECUTE IMMEDIATE 'alter table bale_info disable primary key cascade';
DELETE FROM bale_info t WHERE t.type_id=:old.type_id;
EXECUTE IMMEDIATE 'alter table bale_info ENABLE primary KEY';
END;
解决方案 »
- Oracle 存储过程
- 求教大神,这种情况该怎么解决
- [顶者有分] 这种情况下索引怎么建合适?
- pl/sql中的sql windows和report window有啥区别呀
- 请问我使用联机热备份后,备份的文件到底放在哪里.我看备份向导里面都没有让我指定路境吗?如果我要备份到磁带机里面,我有如何操作呢?
- 如何增大linux下oracle 10g的连接数
- 寻求jsp 访问oracle 数据库 代码
- Oracle ODBC的连接问题
- ORA-24337:语句未准备好。这个错误该怎么解决啊?急,在线等。
- 在局域网内安装和使用oracle8i有什么需要准备和设置的?
- oracle 分区表分配的段为什么达到8M的空间
- oracle10g为什么还有很多表空间碎片
可以在触发器中加入:pragma autonomous_transaction; 表示自由事务处理。
试试下面的语句。CREATE OR REPLACE TRIGGER tri_del_type
BEFORE DELETE
ON bale_type_info
FOR EACH ROW
DECLARE
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'alter table bale_info disable primary key cascade';
DELETE FROM bale_info t WHERE t.type_id=:old.type_id;
EXECUTE IMMEDIATE 'alter table bale_info ENABLE primary KEY';
END;
加入这个语句,报错
ora-04031