

いつもお世話になります。
主キーで検索して、あればupdate、なければinsert という処理を行うにあたって、行の挿入と更新を 1回のSQLで行いたいのですが、oracleでいうmerge文のようなものはmysqlではないのでしょうか??
1回で行いたい理由としては、有り無しの調査をしてからInsertするまでの間に他ユーザーが同時実行をして主キー重複が起きないようにです。
マニュアルを見た所、見あたらなかった為、普通にInsert時のエラー処理で、再試行をしようと思っておりますが、皆様どうされてますでしょうか?
他に良い方法があればと思い、投稿させていただいております。
ご教示いただけると嬉しいです。
No.4ベストアンサー
- 回答日時:
こんにちわ。
はずれていたら申し訳ない。
ON DUPLICATE KEY UPDATE というものがあります。
>ON DUPLICATE KEY UPDATE 節(MySQL 4.1.0 の新機能)が指定されている場合に、PRIMARY または UNIQUE キーでの重複値の生成を招くレコードが挿入されると、古いレコードの UPDATE が実行される。次に例を示す。
このあたりがそうかと思います。
参考URLをみてみてください。
参考URL:http://dev.mysql.com/doc/refman/4.1/ja/insert.html
お礼が遅くなり、すみません。
リンクを拝見いたしました。
まさに、やりたいのはソレでした。教えて下さって有り難うございます。
・・・・・ただ・・・・使用しているバージョンが低いようです。残念。
また、別の環境で使用する時があれば是非使わせていただきたいと思います。
有り難うございました。
No.3
- 回答日時:
MySQLのバージョンは、何でしょうか?
#1さん回答の「PL/SQL」というのはOracleでの名前であり、標準SQLやそれに準じたMySQLでは、ストアドプロシジャやストアドファンクションであり、バージョン5.0からサポートされています。
MySQL 5.0のマニュアルは英文しかなく、使用例も少なかったので、Wikipediaに例題を作成していますので、もしよろしければ一度ご覧ください。
参考URL:http://ja.wikipedia.org/wiki/CREATE_PROCEDURE
No.2
- 回答日時:
この回答への補足
有り難うございます。
言葉が足りず、申し訳なかったのですが、REPLACEでは、全て上書きされてしまいますよね?
データがあった場合は、他の列はそのままで、更新日時のみupdate という処理を行いたいので、今回はREPLACEは使えないのです・・・
また、Insert Ignoreも、少々違うようで・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Access VBA Me.Requery レコー...
-
Accessで重複したデータを一件...
-
Accessにインポートしたら並び...
-
非連結サブフォームのレコード...
-
SQLServerで同一条件レコードの...
-
ACCESSのBookmarkプロパティの...
-
PostgreSQLへのODBC接続について
-
Accessでレコードが更新された...
-
PostgreSqlのテーブルをVBから更新
-
データの二重表示の原因
-
Access 削除クエリが重い
-
Access2000でのExcel行の削除法
-
Accessでの排他制御
-
パススルークエリの使い方
-
ACCESSファイルを開こうとする...
-
「マスタ」と「テーブル」の違...
-
Accessユニオンクエリーで2つ...
-
SELECT時の行ロックの必要性に...
-
Access VBA [リモートサーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
Access 削除クエリが重い
-
データの二重表示の原因
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
SQLデータ修正時に『このレコー...
-
テーブルのレコード削除ができ...
-
2つの項目が重複するレコード...
-
数百万件レコードのdelete
-
ManagementStudioからのデータ削除
-
Access 1レコードずつcsvで出力...
-
Accessで重複したデータを一件...
-
(ACCESS)並び替えをしないで...
-
Access カレントレコードがあり...
-
SQLServerで同一条件レコードの...
-
レコードロックする方法
-
DB2のデーターベースに、ADOで...
-
非連結サブフォームのレコード...
-
Accessでレコードが更新された...
おすすめ情報