質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

4回答

2339閲覧

レコードの存在確認をしてtrueなら削除したいです。

yuki1111

総合スコア72

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2018/05/08 15:45

Spring bootの単体テストで、メソッドに「@sql」と「@Transactional」をつけて
テストしたいと思っています。下記のsql文の上部でUSER_IDに'test'があったらdeleteしたいのですが、その判定をどのようにやるのかの定石を教えてください!僕はcase文くらいしかわかりません。

sql

1INSERT 2INTO 3USER 4( 5 USER_ID 6, PASSWORD 7) VALUES ( 8 'test' 9, '$2a$10$rZ0OcRG9nh6kqAQonZ2nj.0Cp8atdA/DFfBml/mwJ14N2uqHnDy3.' 10)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

下記のsql文の上部でUSER_IDに'test'があったらdeleteしたい

単にDELETE文を実行すれば良いかと

SQL

1DELETE FROM USER 2WHERE USER_ID = 'test'

同じSQLでも方言が大きいですから、どのデータベースを使うのかをタグで明示した方が適切なコメントが付き易いです。
SQLの観点から Oracle Database, PostgreSQL, MySQL の特徴を整理しよう!

投稿2018/05/08 21:27

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki1111

2018/05/09 22:54

回答ありがとうございます。なるほど、mysqlを使用しているので、それを書くべきでした。たしかに単純なDELETE文でよさげですね。
guest

0

ベストアンサー

spring boot で単体試験を行う場合、基本的に MyBatis にしろ Hibernate にしろ
DBMSH2DBmemoryDBを利用するのであったら削除とかをしません。

投稿2018/05/08 22:02

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki1111

2018/05/09 22:27

方向性がおかしい可能性があるということですね。ありがとうございます。手探りでやっているのでおかしくなりがちなのです。
退会済みユーザー

退会済みユーザー

2018/05/09 22:46

まあ、DB関数を明記して利用しているなら ddl-auto: create-drop ですけどね ※ src/test/java(またはresources) 以下に テスト用の 設定ファイルを置けるのでね
yuki1111

2018/05/09 23:06

すごい知識ですね!また成長できた気がします。ありがとうございます。
guest

0

DBMSがMySQLなら下記が参考になるかと。
mysqlでデータが存在するときinsertしないDML

違う場合は、DBMSを明記して下さい。

投稿2018/05/08 17:06

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki1111

2018/05/09 22:58

回答ありがとうございます! mysqlを使用します。参考にさせていただきます!
guest

0

MERGE文を使えませんか?
参考はGoogleで1件目にヒットしたものです。
ご使用の製品で利用できるか確認ください。

参考

読み違えていたらごめんなさい。
上記はレコード存在したらUPDATE、存在しなかったらINSERTのイメージです。
質問の「USER_IDに'test'があったらdeleteしたい」だけを読むと、
DELETE文1つ投げて処理は充足するように思います。

投稿2018/05/08 16:16

編集2018/05/08 16:25
treasurehunterv

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki1111

2018/05/09 23:01

回答ありがとうございます。MERGE文すごいですね! たしかにやろうとしていたことは単純なDELETE文で良かったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問