我在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 :(得分:4)
我认为你可能会感到困惑,它抱怨“TEST_”已经存在,但可能意味着约束'test_'已经存在;为约束使用不同的名称,它对我来说没问题。
答案 1 :(得分:1)
由于下一个错误,我无法运行您的查询:
Msg 3701,Level 11,State 5,Line 1
无法删除表'TEST ',因为它不存在或您没有权限._
Msg 102,Level 15,State 1,Line 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
)[主要]
效果很好:
命令已成功完成。
答案 2 :(得分:0)
总是检查对象是否存在,然后删除它,在这个表中是否存在表,你将永远不会得到一个ERROR,但是如果表存在,表将会丢弃...
IF OBJECT_ID('dbo.TEST_', 'U') IS NOT NULL
DROP TABLE dbo.TEST_
答案 3 :(得分:0)
我知道这已经得到了解答,但它可能会帮助有同样错误的人。如果您恰好在Management Studio中创建了一个创建表查询选项卡以创建表(您可以在其中定义列名和数据类型 - 而不是写入sql),则打开该选项卡,使用不同的查询选项卡删除表,最后打开另一个创建表查询选项卡并尝试创建具有相同名称的表,您将收到一条错误消息,表示由于该表已存在而无法创建该表 - 即使后续的DROP或EXISTS查询无法找到该表。解决方案是关闭第一个创建表查询选项卡,它将允许您保存新表。