私は構文はそれがSQL Server
であることを示しているキーワード「表示」このSQL Serverビューを作成する際のエラーは何ですか?
if object_id('my_view') is null
BEGIN
create view dbo.my_view as
select * from dbo.my_table;
END
私は構文はそれがSQL Server
であることを示しているキーワード「表示」このSQL Serverビューを作成する際のエラーは何ですか?
if object_id('my_view') is null
BEGIN
create view dbo.my_view as
select * from dbo.my_table;
END
近くのエラー正しくない構文を取得しています。あなたは、動的SQLを使用することができます。ビューは、現在のデータベース内に作成することができ
:
IF OBJECT_ID('my_view') IS NULL BEGIN EXEC('CREATE VIEW dbo.my_view AS SELECT * FROM dbo.my_table;'); END;
ポイントがCREATE VIEWということです。 CREATE VIEWは、クエリバッチの最初の文でなければなりません。ビューは最大1,024の列を持つことができます。
動的SQLを使用して新しい「コンテキスト」を作成する方法の1つは、DDLがバッチ内の最初の文です。
また、すべての列を明示的に指定することを強くお勧めします。 SELECT *
を使用するのはよくあるパターンです。
if object_id('my_view') is null
drop view my_view
go
create view dbo.my_view as
select * from dbo.my_table;
go
あなたは本当にいずれかのビューを削除したくない場合があります。
そのようにやってのあなたの理由によって、あなたはそれを私が過去に使用しているこのように、行うことができるかもしれません理由や他の、しかしこれは私のために同様の目標のために動作します。
編集:@StuartLCによるNinja'dは、彼の提案を盗もうとしていませんでした。
代替方法としては、ビューが存在する場合は条件付きで削除してから、条件付きである必要はなく、最新バージョンのビューを保証することもできます。若者の答えによれば、*は良い考えではありません。 – StuartLC
@StuartLCユーザーにカスタム権限が設定されている場合は、この方法を「DROP-CREATE」に設定することはお勧めできません。ドロップして再作成すると、権限を再作成する必要があります。 'CREATE-ALTER'はより安全で簡単です。 – lad2025