解決済みの質問
1.テーブルAに、新たに列を追加したテーブルBを作成。
↓
2.テーブルAのデータをテーブルBにコピー。
↓
3.テーブルAを削除。
↓
4.テーブルBの名前をテーブルAに変更。
という一連の処理があります。
これらの処理でエラーが発生した場合、処理実行前の状態に戻したいのですが、ロールバックできずに消されるはずだった不要なテーブルが残ってしまいます。
何か方法はありますか?よろしくお願いします。
投稿日時 - 2008-07-08 18:42:42
DBMSは何をお使いでしょうか?
http://dev.mysql.com/doc/refman/5.1/ja/implicit-commit.html
http://rina.jpn.ph/~rance/om/sql/hosoku05.html
create table や drop tableなどのDDLには暗黙的にcommitする物がありますので、それではないかと思います。テーブル名変更のalter tableもそうですね。
ワークテーブルはそのまま保持しておくか、組み込みSQLを作成しておいてエラーが発生時にはワークテーブルの存在チェックをして存在するなら削除するようにしてみては?
投稿日時 - 2008-07-08 19:20:44
お礼
説明がまるまる抜けててすいません。。
今回はVBA ACCESS2003を使用して作成しています。
>ワークテーブルはそのまま保持しておくか、組み込みSQLを作成してお>いてエラーが発生時にはワークテーブルの存在チェックをして存在するなら削除するようにしてみては?
確かにそれが確実ですよね。なかなか思い通りにいかないので大変です。。まずはこれでやってみようと思います。
投稿日時 - 2008-07-09 09:49:16
2人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(2件中 1~2件目)
No2さん、メジャーな製品ではSQL Serverがそうです。
begin tran
create table tbla ([fld][int])
insert into tbla values (1)
select * from tbla
rollback tran
テーブルはなくなります。
逆にいうと、SQL Serverなら今回のケースはできたんでしょうね。
投稿日時 - 2008-07-09 02:33:42
お礼
SQLサーバーならやはりできますよね。。
今回はVBA ACCESS2003を使用していたのですが、エラー発生時にSQL文を走らせないと削除は無理みたいですね。
どうもありがとうございました。
投稿日時 - 2008-07-09 09:56:18