J_Maximum 2017-09-03 01:51 采纳率: 33.3%
浏览 1300
已采纳

等待资源被锁死,存储过程和触发器爆发逻辑错误。

 --创建读取登录用户信息的存储过程
CREATE OR REPLACE PROCEDURE
sel_user(loginname IN VARCHAR2, psw IN VARCHAR2, 
         username OUT VARCHAR2, telephone OUT VARCHAR2, email OUT VARCHAR2, 
         gentime OUT VARCHAR2, logintime OUT VARCHAR2, lasttime OUT VARCHAR2, 
         times OUT NUMBER)
IS
BEGIN
 SELECT Username, Mobile, Email, to_char(Gen_Time,'yyyy-mm-dd hh24:mi:ss'), to_char(login_time,'yyyy-mm-dd hh24:mi:ss'), to_char(last_login_time,'yyyy-mm-dd hh24:mi:ss'), count 
 INTO username, telephone, email, gentime, logintime, lasttime, times
 FROM TUser
 WHERE login_name=loginname AND password=psw;
 UPDATE TUser SET count = times+1 WHERE login_name=loginname AND password=psw; 
END sel_user;

--创建记录与登录时间相关的触发器
CREATE OR REPLACE TRIGGER tr_login
BEFORE UPDATE OF count
ON TUser
FOR EACH ROW
DECLARE 
 PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  UPDATE TUser SET last_login_time = :OLD.login_time WHERE login_name = :OLD.login_name;
  UPDATE TUser SET login_time = SYSDATE WHERE login_name = :OLD.login_name;
 COMMIT;
END tr_login;

这是一段涉及JDBC的sql语句,我想通过执行存储过程并更改登陆次数从而通过触发器达到最近登录时间和登录时间的修改,但总爆发资源等待被锁死,求问各位怎么改进?

  • 写回答

2条回答 默认 最新

  • devmiao 2017-09-03 14:31
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境