2017-02-21 4 views
0

`[Detail]`という名前のテーブルを作成します。そして、テーブルの名前を `[Detail]`に変更したいと思います。別のテーブルの1つのデータを使用してテーブルの名前を変更します

新しい名前は、[Event]という別のテーブルの列Titleの最新の文字列にすることができます。
[Event]テーブルには、2つのカラム、EventID、およびTitleがあります。 EventIDが主キーです。

ALTER TABLE [Detail] 
RENAME to 
SELECT Title FROM [Event] 
WHERE EventID = (SELECT MAX(EventID) FROM [Event]) 
+3

全体的に、これはかなり悪いアイデアのように思えるが、あなたは文字列として、テーブルの名前を変更して、 'execute'を使用するようにSQLクエリを生成することによって、それを行うことができます。私はあなたが本当にここで何をしようとしているかについてもっと多くの分析を検討するだろう。ユーザー/クライアントを設定するプロセスとしてテーブルを複製/生成しようとしていない限り、テーブルを動的に作成/名前を変更する必要はありません。 – gmiley

+0

実際、新しいテーブルの名前として[イベント]の最新のタイトルを使用することが必要です。 –

+0

大括弧を使用しているので、tsql/sqlserverタグを付けてください。 – ydoow

答えて

1

動的SQLコマンドの実行を検討してください。 @gmileyで提案されているように、セキュリティやパフォーマンスの問題などの欠点があるので、必要があるかどうかをチェックする必要があります。

DECLARE @NewName varchar(255) 
DECLARE @sqlCommand varchar(1000) 

SELECT TOP 1 @NewName = Title 
FROM [Event] 
ORDER BY ID DESC 

SET @sqlCommand = 'ALTER TABLE [Detail] RENAME to ' + @NewName 
EXEC (@sqlCommand) 
+3

あまりにも悪い表のデザインのような臭いはありません。 – gmiley

関連する問題