我得到一個錯誤,不正確的語法附近關鍵字「視圖」什麼創建此SQL Server視圖中的錯誤?
if object_id('my_view') is null
BEGIN
create view dbo.my_view as
select * from dbo.my_table;
END
我得到一個錯誤,不正確的語法附近關鍵字「視圖」什麼創建此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:
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必須是查詢批次中的第一個語句。視圖可以最多1024列的有。
實現它的一種方法是使用Dynamic-SQL創建新的「上下文」,其中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