MSG 2714有一个已经命名的对象

时间:2010-11-26 21:30:48

标签: sql sql-server-2008

我正在使用sql server 2008管理工作室。我试图创建两个看似简单的表,但在执行时继续得到这个错误。我已经尝试将这些表的名称更改为许多不同的变体。什么都没有帮助。以下是我正在输入的内容。

USE POS410;
go

CREATE TABLE [empl]
(
employeeID INT NOT NULL,
lname VARCHAR(15) NOT NULL,
fname VARCHAR(15) NOT NULL,
address VARCHAR(20) NOT NULL,
city VARCHAR(15) NOT NULL,
state VARCHAR(10) NOT NULL,
areacode INT NOT NULL,
tnumber INT NOT NULL,
EEO1classification VARCHAR(10) NOT NULL,
hiredate DATE NOT NULL,
salary INT NOT NULL,
gender VARCHAR(1) NOT NULL,
age INT NOT NULL,
clocknumb INT NOT NULL,
PRIMARY KEY(employeeID),
UNIQUE(employeeID),
UNIQUE(clocknumb),
FOREIGN KEY(clocknumb) REFERENCES [jb_ttl](Empnum),
);
go

CREATE TABLE [jb_ttl]
(
EEO1 VARCHAR(10) NOT NULL,
JobTitle VARCHAR(15) NOT NULL,
JobDscrpt TEXT NOT NULL,
ExemptNonExemptStatus VARCHAR NOT NULL,
Empnum INT NOT NULL,
PRIMARY KEY (Empnum),
);
go

以下是错误报告

2 个答案:

答案 0 :(得分:1)

我会说你试过不止一次运行这个脚本。它本来是第一次失败,因为你试图创建第一个带有外键的表,而第二个表还不存在。我使用“没有”这个词,因为如果我的猜测是正确的,它现在就可以了,这就是为什么你得到的对象已经存在错误。

作为旁注,SQL支持包装DDL(创建/修改对象)至少可以追溯到2005年。我通常在事务中包装表更改,并且在所有操作都没有错误消息之前不提交事务。

答案 1 :(得分:0)

运行此操作以确认jb_ttl是否已存在:

 select * from master.dbo.sysobjects where [name] = 'jb_ttl'

这将显示名为jb_ttl的anb对象是否已存在。它可能已作为程序或触发器存在吗?

相关问题