SQL Server Create Table 给出错误,对象 '' 已经存在,但它不存在

标签 sql sql-server-2008 create-table

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

这是我的创建语句:

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]

我收到这个错误:

Msg 2714, Level 16, State 5, Line 33
There is already an object named 'cardissuedates' in the database.

Msg 1750, Level 16, State 0, Line 33
Could not create constraint or index. See previous errors.

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

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

我已经停止了所有退出 SSMS 的服务。似乎没有任何效果。 我不知道该去哪里找了。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

您为主键指定了与表相同的名称,这是不允许的,因为两者都是架构范围的对象,并且多个对象不能具有相同的 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]

我只是在约束中添加了前缀 PK_

关于SQL Server Create Table 给出错误,对象 '' 已经存在,但它不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38556882/

相关文章:

php - 如何使用 SQL 中的 sum 函数比较列值?

asp.net - SQL Server主-子关系而不是表中的存储过程

SQL触发器,检查是否输入了特定值

非企业服务器上的 SQL 分区?

mysql - CREATE TABLE...SELECT 组合两个 MySQL 表和 NULL 值

mysql - MYSQL建表语法错误

sql - PostgreSQL - 在关系策略中检测到无限递归

php - SQL不插入数据库

sql - 在 Oracle 中创建一个列具有默认值的表

sql - 在 UNION ALL 结果集中使用聚合函数