2013-10-14 18 views
3

我在SQL Server 2008R2一大奇怪的錯誤:當拖放說並不存在,當創建它說,在SQL Server中存在的表2008R2

我有以下聲明:

DROP TABLE TEST_ 
-- here it says that this table doesn't exists 

GO  

CREATE TABLE TEST_(
    [ID_] [int] IDENTITY(1,1) NOT NULL, 
    [ITEM_] NVARCHAR(255) NOT NULL, 
    CONSTRAINT [TEST_] PRIMARY KEY CLUSTERED 
(
    [ID_] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

-- here says that table already exists 

請按照評論。這個事實也發生在你身上嗎?

我無法重新創建表格。我該怎麼做?

PS:我有相同的數據庫中選擇

+0

您的創建表語法是錯誤的。使其工作並創建表格。 –

+0

真的嗎?錯誤在哪裏? –

+0

我從Management Studio使用'腳本表' - >'創建到'選項 –

回答

4

我想你可能會混淆,它抱怨道:「TEST_」已經存在,但可能意味着約束「TEST_」已經存在;爲約束使用不同的名稱,它對我來說工作正常。

+1

是的,這是錯誤的。大一號:) –

1

我無法運行查詢,因爲一個錯誤的:

消息3701,級別11,狀態5,1號線
不能刪除表「TEST」,因爲它不存在,或者您沒有permission._
消息102,15級,狀態1,5號線
附近有語法錯誤('。
Msg 319,Level 15,State 1,Line 7
關鍵字'with'附近的語法不正確。如果此語句是公用表表達式,xmlnamespaces子句或變更跟蹤上下文子句,則前面的語句必須以分號結尾。

但是,當我修改您的查詢:
CREATE TABLE TEST_(
[ID_] [INT] IDENTITY(1,1)NOT NULL,
[ITEM_] NVARCHAR(255)NOT NULL
)ON [PRIMARY]
它正常工作:
命令成功完成。

+1

問題是abaout約束的名稱是與表名相同 –

0

永遠做一個檢查對象存在,然後放下它,在這​​個表是否存在你將永遠不會得到回報的錯誤,但如果它存在,它表將下降...

IF OBJECT_ID('dbo.TEST_', 'U') IS NOT NULL 
DROP TABLE dbo.TEST_ 
0

我知道這已被回答,但它可能會幫助有同樣錯誤的人。如果您恰好在Management Studio中創建了一個表格查詢選項卡來創建一個表格(您可以在其中定義列名稱和數據類型 - 不是寫入sql),將該選項卡打開,使用不同的查詢選項卡刪除表格,最後打開另一個表格創建表查詢選項卡並嘗試創建具有相同名稱的表,則會出現錯誤,指出由於表已存在而無法創建表 - 即使後續的DROP或EXISTS查詢無法找到表。解決方案是關閉第一個創建表查詢選項卡,它將讓您保存新表。

相關問題