- PR -

DROP TABLEでワイルドカード

投稿者投稿内容
eich2509
会議室デビュー日: 2007/03/06
投稿数: 13
投稿日時: 2007-03-08 16:50
SQLServer2000環境です。

DROP TABLE テーブル名

テーブルを削除する場合にテーブル名にワイルドカードは使えるのでしょうか?

もし、ワイルドカードが使えない場合、同じようなテーブル名のものを
一度に削除したいのですが、何か良い方法ありますか?
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-03-08 17:02
こんにちは。

そんな事出来たらうっかりミスした時に取り返しつかないですよね? 
どういう意図で複数のテーブルを削除したいのか解りませんが、

すべてを消したければDROP DATABASE でそのデータベース自体を
削除して作成すれば良いんじゃないでしょうか?
_________________
Inspired Ambitious
ISMS Assistant Auditor
eich2509
会議室デビュー日: 2007/03/06
投稿数: 13
投稿日時: 2007-03-08 17:09
引用:

どういう意図で複数のテーブルを削除したいのか



テーブル名の後ろにユーザーIDを付けて複数テーブルを作成しています。

TableName_user1
TableName_user2 というように。

それを一度にDROP TABLEしたい、というのが本来の目的です。

ASP環境で開発をしていますが、最初はページのCLOSEイベント時に
テーブルを削除しようと考えたのですが、CLOSEイベント取得方法がわからず、
ならば、まとめて削除してしまおうかな〜と安易に思いついたわけです。

NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-03-08 17:11
これ見るとワイルドカードは無理だけど、
カンマで区切っていけば良いのでは無いかと 
http://msdn2.microsoft.com/ja-JP/library/ms173790.aspx

_________________
Inspired Ambitious
ISMS Assistant Auditor
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-03-08 17:44
引用:

chie0925さんの書き込み (2007-03-08 17:09) より:
テーブル名の後ろにユーザーIDを付けて複数テーブルを作成しています。

それを一度にDROP TABLEしたい、というのが本来の目的です。

ASP環境で開発をしていますが、最初はページのCLOSEイベント時に
テーブルを削除しようと考えたのですが、CLOSEイベント取得方法がわからず、
ならば、まとめて削除してしまおうかな〜と安易に思いついたわけです。


実行するタイミングなどは問題ないのでしょうか?DROP TABLEして問題ない状態かどうかの判断は不要ですか?

私なら・・1本プログラムを書いてしまうかもしれません。テーブル一覧を取得してからテーブル名をチェックしてDROP TABLEを投げるだけだし。それでも削除していいかどうかあらかじめ対象一覧を表示して確認ですかね。

何が使えるのか(私は)よくわからないのですが、そういうアプローチはなしですかね?

[ メッセージ編集済み 編集者: shimix 編集日時 2007-03-08 17:46 ]
どせい
大ベテラン
会議室デビュー日: 2006/10/25
投稿数: 145
投稿日時: 2007-03-08 18:09
わざわざ「TableName_user1」「TableName_user2」のCREATE/DROPじゃなくて、
「TableName」テーブルにユーザ名のカラム追加すればいいんじゃないか?
これなら全ユーザ分の削除はTRUNCATEすればいいだけになるし。
それだとマズい理由でもあるのかな?

[ メッセージ編集済み 編集者: どせい 編集日時 2007-03-08 18:12 ]
そういう理由ですか。苦労してますね(´・ω・`)

[ メッセージ編集済み 編集者: どせい 編集日時 2007-03-08 22:56 ]
eich2509
会議室デビュー日: 2007/03/06
投稿数: 13
投稿日時: 2007-03-08 22:37
引用:

「TableName」テーブルにユーザ名のカラム追加すればいいんじゃないか?



モチロン、当初はテーブルにユーザーIDの項目を置いて
ユーザ単位でデータのDELETE、INSERTをしようと思っていたのですが、
一度にINSERTするデータ件数が多く、SEQのINDEXのカウントが
どんどんあがってしまうので限りがあるのは困る、
という上司の判断でユーザ単位でテーブルをCREATEしDROPする方法を
とることになったのです。。

私は、いち派遣社員なので上司がそう言えばその通りにするだけなので
この方法にすることに。

ページを開いた時にDROP、CREATEが走るのですがそのままテーブルが残った
ままだと困るということで、
じゃあ、夜間にDTSで削除?と考えています。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-03-08 23:03
TSQLを忘れつつありますが、ストアドじゃだめですか?

1.システムテーブルからテーブル一覧をSELECTしてカーソルへ
2.対象テーブルならDROP TABLE
3.繰り返し

スキルアップ/キャリアアップ(JOB@IT)