我在jsp页面上填写数据 之后确定 在email不在原来的a表的时候有错误
user register failed:No data - zero rows fetched, selected, or processed我的触发器如下CREATE TRIGGER `a_insert` BEFORE INSERT ON `a` FOR EACH ROW BEGIN
declare bIDexists int default 0;
select id into bIDexists from a where email=NEW.email limit 1;
IF bIDexists>0 THEN
set new.SuperId=bIDexists;
insert ignore into b values(bIDexists);
else
set new.superId=LAST_INSERT_ID()
end if;
END;;
DELIMITER ;这个触发器字单独在数据库里用没有任何问题 。
用mysql的gui 工具测试 insert into a(email ,superid) values('sss',LAST_INSERT_ID())
insert into a(email) values('sssd') 都是没有问题的但是现在应用的架构是mysql+linux+java我在jsp页面上填写数据 之后确定 在email不在原来的a表的时候有错误
user register failed:No data - zero rows fetched, selected, or processed如果email是a表存在的(比如以前a表有条记录的email是 a@163。com, 你在页面上填入这个旧email,这条记录可以添加成功), 填完数据点 【确定】 是正确 ;反过来,如果email是a表不存在的, 会发生以上错误user register failed:No data - zero rows fetched,。原因 ???
user register failed:No data - zero rows fetched, selected, or processed我的触发器如下CREATE TRIGGER `a_insert` BEFORE INSERT ON `a` FOR EACH ROW BEGIN
declare bIDexists int default 0;
select id into bIDexists from a where email=NEW.email limit 1;
IF bIDexists>0 THEN
set new.SuperId=bIDexists;
insert ignore into b values(bIDexists);
else
set new.superId=LAST_INSERT_ID()
end if;
END;;
DELIMITER ;这个触发器字单独在数据库里用没有任何问题 。
用mysql的gui 工具测试 insert into a(email ,superid) values('sss',LAST_INSERT_ID())
insert into a(email) values('sssd') 都是没有问题的但是现在应用的架构是mysql+linux+java我在jsp页面上填写数据 之后确定 在email不在原来的a表的时候有错误
user register failed:No data - zero rows fetched, selected, or processed如果email是a表存在的(比如以前a表有条记录的email是 a@163。com, 你在页面上填入这个旧email,这条记录可以添加成功), 填完数据点 【确定】 是正确 ;反过来,如果email是a表不存在的, 会发生以上错误user register failed:No data - zero rows fetched,。原因 ???
解决方案 »
- 如何在mysql数据库中插入中文部产生乱码?
- mysql数据库中中文可以显示但是在php网页上显示为???在线等!!!!!
- mysql 复制环境 和 消息机制有关系没有
- 请教MySQL的数据库文件如何拷贝到服务器上
- 『急』请教MySQL中数据汇总、同步问题
- postgresql如何改变数据库编码啊?
- 安装mysql到d:\mysql,为什么连接不上?
- mysql 可不可以模糊查詢,類似sqlserver 的 like % 語句,該怎樣實現此功能?
- 为什么用控台mysql -e命令执行sql语句不会记入binlog
- 如何给InnoDB瘦身
- 请问这句话该如何表达?
- 避免每个记录都做比较 常量放到where前面
if(user.getEmail()!= null)
{
if(isEmailExists(conn,user.getEmail()) >0 )
ps.setInt(29, isEmailExists(conn,user.getEmail()));
else
ps.setInt(29, LAST_INSERT_ID()); ----------------这个地方编译错误
}
else
ps.setInt(29, 0);
ps.executeUpdate();不知道有什么方法 可以让
ps.setInt(29, LAST_INSERT_ID())走通???
ps.setString(29, "LAST_INSERT_ID()");???
在java里跳不过去 即使放到 mysql执行 发现最后得到字段值 是0
不是 153432这id值不知道有其他的替换方法
# //Get the DISCOUNT_ID from the last INSERT statement.
# String identityQuery = "SELECT @@IDENTITY AS IDENTITY";
# Statement identityStatement = connection.createStatement();
# ResultSet identityResultSet = identityStatement.executeQuery(identityQuery);
# identityResultSet.next();
# int discountId = identityResultSet.getInt("IDENTITY");
# identityResultSet.close();
# identityStatement.close(); 得到上次插入的id值, 如果是这样 要分2次进行
第1次插入
之后进行udpate superID
这个a表的id是自动增长
上面的insert语句希望superId能得到 当钱自动增长的id值
if(user.getEmail()!= null)
{
int nSuperId=isEmailExists(conn,user.getEmail());
if(nSuperId >0 )
{
updateSuperID(conn,nSuperId,nLastID);
DAO.insertLimitBySuperid(conn, nLastID+"", nSuperId+"");
}
else
{
updateSuperID(conn,nLastID,nLastID);
DAO.insertLimitBySuperid(conn, nLastID+"", nLastID+"");
}
}
;
user.setId(nLastID); } finally {
DBConnection.closeRS(rs);
DBConnection.closeStmt(ps);
}
public static int isUserExists (Connection conn, String userName) throws SQLException
{
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(_sqlisUserExists); ps.setString(1, userName);
ps.setLong(2, passwrod); rs = ps.executeQuery();
if (rs.next()) {
return rs.getInt(1);
}
} finally {
DBConnection.closeRS(rs);
DBConnection.closeStmt(ps)
} return -1;
}
update ----------------ps.executeUpdate ();