SQL Server创建表给出错误,表明对象“”在不存在时已经存在

Cas*_*ass 1 sql create-table sql-server-2008

抱歉,如果这看起来像重复的,但我找不到我的情况的答案。我正在尝试cardissuedates在数据库中创建表NBFP。

这是我的创建语句:

USE NBFoodPantry

CREATE TABLE cardissuedates 
(
    clientid char(36) NOT NULL,
    issuedate date NOT NULL

    CONSTRAINT cardissuedates 
       PRIMARY KEY CLUSTERED (clientid ASC)
           WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                 IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                 ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

消息2714,级别16,状态5,第33
行在数据库中已经有一个名为“ cardissuedates”的对象。

消息1750,级别16,状态0,第33行
无法创建约束或索引。请参阅先前的错误。

该表在NBFB数据库中不存在,并且在检查master和NBFB时找不到。

我试过了

select * 
from sys.all_objects
where name like '%ca%'
order by 1

select * 
from sys.tables
where name like 'c%'
order by 1

select * 
from sys.all_columns
where name like 'c%'
order by 1
Run Code Online (Sandbox Code Playgroud)

我什至创建了一个新数据库并执行了该create语句,并在USE语句中使用了新的数据库名称。同样的错误。

我已经停止了退出SSMS的所有服务。似乎没有任何作用。我不知道再看哪里。

任何帮助将不胜感激。

谢谢

小智 5

您要为主键提供与表相同的名称,这是不允许的,因为两者都是架构范围的对象,并且多个对象不能具有相同的schema_name.object_name。您可以改为:

CREATE TABLE cardissuedates ( 
    clientid char(36) NOT NULL, 
    issuedate date NOT NULL CONSTRAINT 
    pk_cardissuedates PRIMARY KEY CLUSTERED ( clientid ASC )
    WITH (
        PAD_INDEX = OFF, 
        STATISTICS_NORECOMPUTE = OFF, 
        IGNORE_DUP_KEY = OFF, 
        ALLOW_ROW_LOCKS = ON, 
        ALLOW_PAGE_LOCKS = ON, 
        FILLFACTOR = 90
    ) ON [PRIMARY] 
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我刚刚在约束中添加了前缀PK_