[SQL] 한 번에 여러 SQL 문을 실행 MyBatis로, 그 수 있습니까?
SQL한 번에 여러 SQL 문을 실행 MyBatis로, 그 수 있습니까?
이 일 개 이동에 여러 SQL 문을 실행할 수 있는지 궁금했다. 예를 들어 내가 여러 테이블에서 행을 삭제할 것인지 시나리오는, 내가 좋아하는 일을 할 수있는 방법이있다 ..
<delete id="delete" parameterType="String">
DELETE FROM DUMMYTABLE_A where X=${value}
DELETE FROM DUMMYTABLE_B where X=${value}
</delete>
해결법
-
==============================
1.네, 대부분의 데이터베이스이 할 수 있습니다. 일반적으로 당신이 뭔가와 SQL 문을 구분해야합니다. 포스트 그레스와 MySQL에서는 세미콜론입니다 (;). 마이크로 소프트 SQL 서버에서는 키워드 GO를 사용해야합니다. [2013년 5월 업데이트 : SQL 서버 2012로, 당신은 당신의 문을 구분하는 세미콜론을 사용해야 할 수 있습니다. SQL 서버 2012 (예. 다음 버전 이후) 한 후이 필수가 될 것입니다. GO를 사용하여 현재) SQL2012과 그 이후의 일을 할 수있는 사용되지 않는 방법입니다. ]
네, 대부분의 데이터베이스이 할 수 있습니다. 일반적으로 당신이 뭔가와 SQL 문을 구분해야합니다. 포스트 그레스와 MySQL에서는 세미콜론입니다 (;). 마이크로 소프트 SQL 서버에서는 키워드 GO를 사용해야합니다. [2013년 5월 업데이트 : SQL 서버 2012로, 당신은 당신의 문을 구분하는 세미콜론을 사용해야 할 수 있습니다. SQL 서버 2012 (예. 다음 버전 이후) 한 후이 필수가 될 것입니다. GO를 사용하여 현재) SQL2012과 그 이후의 일을 할 수있는 사용되지 않는 방법입니다. ]
MySQL은 / 포스트 그레스 예 :
DELETE FROM DUMMYTABLE_A where X=${value}; DELETE FROM DUMMYTABLE_B where X=${value}; DELETE FROM DUMMYTABLE_C where X=${value};
MS-SQL의 예 :
DELETE FROM DUMMYTABLE_A where X=${value} GO DELETE FROM DUMMYTABLE_B where X=${value} GO DELETE FROM DUMMYTABLE_C where X=${value}
더 나은 데이터베이스 (예.하지 MySQL은) 또한 TRAN / ROLLBACK TRAN을 COMMIT / TRAN을 BEGIN와의 거래를 지원합니다. 당신은 그것의 일부가 실패 할 경우, 세 다시 압연 될 하나의 원자 조작으로 모든 문은 실제로 일괄 거래를 할 수 있습니다 사용. 이들에 대한 몇 가지 자세한 내용은 http://www.sqlteam.com/article/introduction-to-transactions를 참조하십시오.
가능성이 모두 당신이 필요로하는 대부분의 SQL 문하지만 사이의 세미콜론입니다!
-
==============================
2.나는 오라클과 MyBatis로 사용하고 있습니다. 나는 다른 DB에서 비슷한 일이있을 것 같아요. 프로젝트를 지원해야 할 때 실제로 당신은 항상, 일반적으로 미래를위한 더 나은 DB, 절차를 만들 수 있습니다.
나는 오라클과 MyBatis로 사용하고 있습니다. 나는 다른 DB에서 비슷한 일이있을 것 같아요. 프로젝트를 지원해야 할 때 실제로 당신은 항상, 일반적으로 미래를위한 더 나은 DB, 절차를 만들 수 있습니다.
<delete id="deleteUnfinishedData" parameterType="map"> {call declare begin delete from TABLE1 where id = #{valueFromMap1}; delete from TABLE2 where id = #{valueFromMap2}; end } </delete>
-
==============================
3.사람이 오류 등을 가지고있는 경우
사람이 오류 등을 가지고있는 경우
당신은 당신의 드라이버에서 멀티 쿼리를 허용함으로써이 문제를 해결할 수 있습니다. mariadb 위해 그것은 MySQL은 같은 것
allowMultiQueries = TRUE
MyBatis로 문제를 다음에 설명 https://github.com/mybatis/mybatis-3/issues/1497
from https://stackoverflow.com/questions/7174225/mybatis-executing-multiple-sql-statements-in-one-go-is-that-possible by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL과 타의 추종을 불허하는 기록을 찾기 (0) | 2020.06.30 |
---|---|
[SQL] 커밋 된 트랜잭션을 롤백 (0) | 2020.06.30 |
[SQL] 마 DDL 문은 항상 당신에게 커밋 암시를 제공하거나 암시 롤백을받을 수 있나요? (0) | 2020.06.30 |
[SQL] 그것은 모니터링하고 액세스 MDB에 의해 만들어진 실제 쿼리를 기록 할 수 있습니까? (0) | 2020.06.30 |
[SQL] 나는 특정 테이블에 MySQL 사용자를 제한 할 수있는 방법 (0) | 2020.06.30 |