2015-06-08 191 views
-1

我想在其他表(otherStuff)中的數據發生更改時創建/更新表(stuff)。在我的選擇狀態下,我不斷收到代碼中的語法錯誤。我知道SQL的最基礎的,我不明白我做錯了SQL語句中的語法錯誤

create trigger TestTrigger 
on dbo.otherStuff 
after insert , update , delete 
as 
begin 
    drop table dbo.stuff 
    create table dbo.stuff as 

這是選擇發生錯誤

SELECT ID, Name 

這是選擇哪裏發生錯誤

from dbo.otherStuff 
end; 
go 
+2

您可以發佈錯誤消息?我的意思是,我們怎麼會知道是什麼問題? – Lamak

+1

在SQL Server中沒有「CREATE TABLE ... AS」這樣的東西。你在哪裏找到這個語法?它在其他平臺中是有效的,但是不能期望進行某種轉換,您不能從一個數據庫平臺轉移到另一個數據庫平臺。 –

+0

是的,絕對有不同的SQL風格。 SQL Server使用Transact-SQL,不同版本的SQL Server甚至具有不同的版本,完全不同的供應商完全不同的產品並不介意,它們都實現了他們自己的ANSI標準的子集和他們自己的專有擴展。停止使用這樣的教程網站,他們通常很糟糕。從[供應商的官方產品文檔]開始(https://technet.microsoft.com/en-us/library/ms189826%28v=sql.90%29.aspx)。 –

回答

5

SQL Server不支持CREATE TABLE AS語法。您可以使用SELECT * INTO像:

SELECT ID, Name 
INTO dbo.stuff 
FROM dbo.otherStuff 
+0

@Lamak我認爲OP正在顯式地嘗試'CREATE TABLE ... AS',它在其他平臺上運行很像'SELECT INTO',但不是SQL Server。 SQL Server期望'CREATE TABLE ...()WITH()...' –

+0

@AaronBertrand是的,很可能。起初,op甚至沒有在觸發器的插入,更新,刪除部分添加'',所以我認爲他/她只是添加了一些代碼而沒有真正尋找 – Lamak

+0

謝謝你的幫助。它很難區分不同版本的SQL – Noah