为什么会死锁?

[复制链接]
查看11 | 回复1 | 2005-2-28 15:44:00 | 显示全部楼层 |阅读模式
在test表上建立了一个触发器如下:
CREATE OR REPLACE TRIGGER TRIGGER_test
AFTER INSERT or update or delete ON TEST
FOR EACH ROW
BEGIN
CASE
WHEN inserting THEN
dbms_output.put_line('deleting');
WHEN updating THEN
begin
test_trigger('updating',:new.bm);
end;
WHEN deleting THEN
dbms_output.put_line('deleting');
dbms_output.put_line(

ld.bm);
END CASE;
END;
test_trigger是一个调用java的存储过程:
create or replace procedure test_trigger(operate varchar2,tableName varchar2)
as language java name
'com.dc.irc.cycle.TestTrigger.operate(java.lang.String,java.lang.String)';

operate的方法体如下:

public static void operate(String operate,String operateTable) throws SQLException

{

DriverManager.registerDriver(

new oracle.jdbc.OracleDriver()

);

Connection conn= DriverManager.getConnection(

"jdbc

racle:thin:@172.31.0.12:1521:bicp",

"scott",

"tiger"

);


String sql = "INSERT INTO test(xh,bm) VALUES(?,?)";


/* 使用try ... catch语句抓取并抛出例外 */

try {

PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 4);

pstmt.setString(2,"dddd&quot

;

pstmt.executeUpdate();

pstmt.close();


} catch (SQLException e)

{

e.printStackTrace();

}

}
test表的结构如下:
SQL> desc test;
名称
空?
类型
-------------------------------------------------
-------------
XH
NOT NULLNUMBER
BM
VARCHAR2(20)
ZQ
VARCHAR2(10)
KSSJ
DATE
JSSJ
DATE

当我执行 update test set bm = 'cc' 时/发生死锁!
回复

使用道具 举报

千问 | 2005-2-28 15:44:00 | 显示全部楼层
sorry啊。我已经排过版了。系统自动去掉了好多空格 :(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行