2015-05-09 55 views
3

我試圖在Visual Studio 2013中添加一個SQL表的觸發器,但我得到一個錯誤的Visual Studio 2013創建SQL觸發誤差

SQL80001:近「文件結束」不正確的語法要求以「 「。

這是SQL代碼:

CREATE TRIGGER SomeMethod1 
ON UserTable 
AFTER INSERT AS 
    EXTERNAL NAME "Main.Site.Header1.OnEvent" 

這是第一次我試圖SQL觸發器所以也許我錯過了什麼..

人有什麼問題的想法?

+0

此博客可能有助於http://geekswithblogs.net/tonyt/archive/2010/03/05/138363.aspx。底部的註釋可能很有用「您可以通過將腳本文件屬性中的構建操作更改爲」無「來解決此問題。」 – DeanOC

+0

我沒有「文件」,我只是想「更新「現有的表格。我做了「添加 - >新觸發器」,並且從我的問題中編寫了代碼 – pascx64

+0

您正在編寫** SQL **(結構化查詢語言)並且真正意味着Microsoft ** SQL Server **(實際產品)是由此嗎?如果是:請添加'sql-server'標籤來清除。如果不是:**數據庫系統是用來做什麼的? –

回答

1

在SQL Server中,雙引號與方括號相同並分隔對象的名稱。例如:

SELECT * FROM "Customers" 

這是沒有必要在這裏,但如果對象的名稱是複雜的,你需要用雙引號或方括號

SELECT * FROM [Order Details] 
SELECT * FROM "Order Details" 

來界定它。如果某個對象是使用多個指像一個模式或數據庫的部分,你就必須界定各個單獨部件,而不是引用的全名,如: SELECT * FROM「DBO」「客戶」 不

SELECT * FROM "dbo.Customers" 

在您顯示的代碼,你擁有整個四個部分名稱引用:

"Main.Site.Header1.OnEvent" 

EXTERNAL NAME需要三個部分,第一部分是國內組裝,第二個是類,第三是方法。如果你有一個名字空間的類,那麼它有兩個部分的名字。我從上下文猜你真正想要的這裏是:

Main."Site.Header1".OnEvent" 

,因爲網站是命名空間和頭1是類,所以第二個參數需要被分隔來表示複雜的名稱,以同樣的方式「訂單細節「需要被分隔,因爲它包含一個空格。