- - PR -
DROP TABLEでワイルドカード
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-08 16:50
SQLServer2000環境です。
DROP TABLE テーブル名 テーブルを削除する場合にテーブル名にワイルドカードは使えるのでしょうか? もし、ワイルドカードが使えない場合、同じようなテーブル名のものを 一度に削除したいのですが、何か良い方法ありますか? | ||||
|
投稿日時: 2007-03-08 17:02
こんにちは。
そんな事出来たらうっかりミスした時に取り返しつかないですよね? どういう意図で複数のテーブルを削除したいのか解りませんが、 すべてを消したければDROP DATABASE でそのデータベース自体を 削除して作成すれば良いんじゃないでしょうか? _________________ Inspired Ambitious ISMS Assistant Auditor | ||||
|
投稿日時: 2007-03-08 17:09
テーブル名の後ろにユーザーIDを付けて複数テーブルを作成しています。 TableName_user1 TableName_user2 というように。 それを一度にDROP TABLEしたい、というのが本来の目的です。 ASP環境で開発をしていますが、最初はページのCLOSEイベント時に テーブルを削除しようと考えたのですが、CLOSEイベント取得方法がわからず、 ならば、まとめて削除してしまおうかな〜と安易に思いついたわけです。 | ||||
|
投稿日時: 2007-03-08 17:11
これ見るとワイルドカードは無理だけど、
カンマで区切っていけば良いのでは無いかと http://msdn2.microsoft.com/ja-JP/library/ms173790.aspx _________________ Inspired Ambitious ISMS Assistant Auditor | ||||
|
投稿日時: 2007-03-08 17:44
実行するタイミングなどは問題ないのでしょうか?DROP TABLEして問題ない状態かどうかの判断は不要ですか? 私なら・・1本プログラムを書いてしまうかもしれません。テーブル一覧を取得してからテーブル名をチェックしてDROP TABLEを投げるだけだし。それでも削除していいかどうかあらかじめ対象一覧を表示して確認ですかね。 何が使えるのか(私は)よくわからないのですが、そういうアプローチはなしですかね? [ メッセージ編集済み 編集者: shimix 編集日時 2007-03-08 17:46 ] | ||||
|
投稿日時: 2007-03-08 18:09
わざわざ「TableName_user1」「TableName_user2」のCREATE/DROPじゃなくて、
「TableName」テーブルにユーザ名のカラム追加すればいいんじゃないか? これなら全ユーザ分の削除はTRUNCATEすればいいだけになるし。 それだとマズい理由でもあるのかな? [ メッセージ編集済み 編集者: どせい 編集日時 2007-03-08 18:12 ] そういう理由ですか。苦労してますね(´・ω・`) [ メッセージ編集済み 編集者: どせい 編集日時 2007-03-08 22:56 ] | ||||
|
投稿日時: 2007-03-08 22:37
モチロン、当初はテーブルにユーザーIDの項目を置いて ユーザ単位でデータのDELETE、INSERTをしようと思っていたのですが、 一度にINSERTするデータ件数が多く、SEQのINDEXのカウントが どんどんあがってしまうので限りがあるのは困る、 という上司の判断でユーザ単位でテーブルをCREATEしDROPする方法を とることになったのです。。 私は、いち派遣社員なので上司がそう言えばその通りにするだけなので この方法にすることに。 ページを開いた時にDROP、CREATEが走るのですがそのままテーブルが残った ままだと困るということで、 じゃあ、夜間にDTSで削除?と考えています。 | ||||
|
投稿日時: 2007-03-08 23:03
TSQLを忘れつつありますが、ストアドじゃだめですか?
1.システムテーブルからテーブル一覧をSELECTしてカーソルへ 2.対象テーブルならDROP TABLE 3.繰り返し |