如何在单个查询中插入多个mysql表?

时间:2012-06-08 09:13:07

标签: mysql jdbc

我有这个查询,在我的sql命令行中执行客户端执行正常并在两个表中获取条目但执行它会给我错误。

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误;检查那个男人   ual对应于您的MySQL服务器版本,以便在'INSERT INTO tm_belonging(B。)附近使用正确的语法   ID,BELONGING_TYPE,BELONGING_TEXT)VALUES(第1行的LAST_INSERT_ID'

String sql="INSERT INTO tm_visitor(VISITOR_TEXT,COMPANY_TEXT,CONTACT,PERSON_TO_MEET,DEPARTMENT_TEXT,FLOOR)Values(?,?,?,?,?,?);"+"INSERT INTO tm_belonging(BID,BELONGING_TYPE,BELONGING_TEXT)VALUES(LAST_INSERT_ID(),?,?);";

PreparedStatement pst = conn.prepareStatement(sql);

pst.setString(1,VisitorName.toUpperCase());
pst.setString(2,Company.toUpperCase());
pst.setString(3,Contact);
pst.setString(4,WhomeToMeet.toUpperCase());
pst.setString(5,Department);
pst.setString(6,DepartmentFloor);
pst.setString(7,BType);
pst.setString(8,Belonging);
pst.executeUpdate();    
pst.close();

2 个答案:

答案 0 :(得分:0)

我认为你不能。您必须为两个插入查询使用两个预准备语句。通常我会创建存储过程,如果我必须在一个事务中处理多个表并使用可调用语句。

答案 1 :(得分:0)

mmm试试这个:

String sql="INSERT INTO tm_visitor(VISITOR_TEXT,COMPANY_TEXT,CONTACT,PERSON_TO_MEET,DEPARTMENT_TEXT,FLOOR)Values(?,?,?,?,?,?);"+"set @lastid=LAST_INSERT_ID();"+"INSERT INTO tm_belonging(BID,BELONGING_TYPE,BELONGING_TEXT)VALUES(@lastid,?,?);";

如果这不起作用,则必须使用一个预备语句进行查询