mysql:5495
From: "Takeo Shibata" <"Takeo Shibata" <shibata@xxxxxxxxxx>>
Date: Mon, 13 May 2002 17:03:53 -0700
Subject: [mysql 05495] LOCK TABLE の使用およびそのた SQL の実行保証にかんして
いつもお世話になってます 関連する2つのテーブルを同時に更新をかけ どのような状態においても かならず2つのテーブルが同時にアップされる必要があります 1つが何らかの理由により失敗すればもういつの更新もキャンセル しなければなりません このhttp://www.mysql.gr.jp/ の1.4.6 COMMIT/ROLLBACK なしでうまくやる方法 で いまいろいろ資料みて LOCK TABLEという記述と 1回のオペレーション中でレコードを更新する関数 という記述がありました 実際は connect_db SQL1 = insert into customer(id, passwd, user, ....) values(xx,yy,zz) SQL2 = insert into login(id, passwd, host) values(xx,yy,$REMOTE_HOST) LOCK TABLES customer WRITE, login WRITE execute(SQL1), execute(SQL2) UNLOCK TABLES とやりたいのですが まあ用は execute(SQL1) でここで失敗すればすべてのアクションを取り消せばいいのですが execute(SQL1)が成功して execute(SQL2)が失敗した場合、再度試行するか、 SQL1をキャンセルしたいのですが 通常SQL1,SQL2両方成功させ、最悪でも 両方実行していない状態をできるだけ保証したいのですが なにかSQLでスマートなやりかたありますでしょうか? 2つ以上の更新、追加SQL クエリーを実行するときで最初のクエリーが成功し、その 次のクエリーが失敗したら、最初のクエリー実行をキャンセルして から最試行するなりエラー表示するようにしたいのですが。。 なにかDBに関しては基本的なことかも しれませんどうかよろしくお願いいたします こういうときはROLLBACK んあてのを使用するべきなんでしょうか? なにかいい方法や解決方法に関する具体的な例SQLがあるサイト ご存知でしたらどうかご教授ください よろしくお願いいたします
-> 5495 2002-05-14 09:03 ["Takeo Shibata" <shi] LOCK TABLE の使用およびそのた SQL の実行保証にかんして 5501 2002-05-14 23:07 ┗[とみたまさひろ <tomm]