当我使用这个脚本时:
IF OBJECT_ID('dbo.TableX', 'U') IS NOT NULL
DROP TABLE dbo.TableX
CREATE TABLE TableX
(
...
...
...
CONSTRAINT TableX PRIMARY KEY (column1, column2, column3)
)
我收到错误
数据库中已存在名为“TableX”的对象
但这只是在我使用CONSTRAINT
行时。
为什么我只在使用CONSTRAINT
时才会收到错误,我该如何解决呢?
答案 0 :(得分:5)
那是因为您的Constaint名称与表名相同。将其命名为PK_TableX
答案 1 :(得分:1)
表和约束都被视为SQL Server数据库中的对象。
检查sys.objects
系统表。
因此,Table和Constraint的名称不能相同。当您运行create语句时,SQL Server将首先创建该表,然后尝试创建因为sys.objects
表中已存在名称而失败的约束。
为主键约束尝试其他名称。根据标准,主键以PK_
为前缀。因此,您可以在此处将主键命名为PK_TableX