2012-06-08 2 views
1

У меня есть этот запрос, который при выполнении в моей клиентской строке sql-клиент выполняет штраф и получает запись в обеих таблицах, но выполнение этого дает мне ошибку.Как вставить в несколько таблиц mysql в одном запросе?

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: У вас есть ошибка в синтаксисе SQL; проверить человека UAL, который соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с 'INSERT INTO tm_belonging (B ID, BELONGING_TYPE, BELONGING_TEXT) VALUES (LAST_INSERT_ID' в строке 1

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(); 

ответ

0

ммм попробовать это:...

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,?,?);"; 

Если это не работает, вы должны использовать один подготовленный оператор для запроса

+0

@ Pablo martinez: thnx приятель. – DeveloperJava

+0

: D you'r welcome –

+0

well pablo .... Вы бы объяснили это утверждение в своем запросе ... '' set @ lastid = LAST_INSERT_ID(); "' –

0

Я не думаю, что вы можете вы должны использовать две подготовленные заявления для двух вставных запросов Обычно я создаю процедуру магазина, если мне приходится иметь дело с более чем одной таблицей в одной транзакции и использовать вызываемое заявление

+0

Спасибо, sandeep это сработало. , но как вы думаете, это лучший подход, используя два подготовленных оператора для вставки в несколько таблиц. – DeveloperJava

+0

@yatin: Хорошая практика - принять самый полезный ответ –