SQL错误:数据库中已经存在名为'TPatients'的对象。

3

我好像弄不清楚为什么会出现以下错误:

Msg 2714, Level 16, State 5, Line 56
There is already an object named 'TPatients' in the database.
Msg 1750, Level 16, State 1, Line 56
Could not create constraint or index. See previous errors.

以下是我的“删除表格”和“创建表格”的SQL语句。每当我执行时,它都会说“TPatients”已经存在,但我在对象资源管理器中找不到它。我尝试移动删除表格语句的位置,但无法使其正常工作。
-- --------------------------------------------------------------------------------
--  Step #1 : Drop tables
-- --------------------------------------------------------------------------------
IF OBJECT_ID ('TAppointments')      IS NOT NULL DROP TABLE TAppointments
IF OBJECT_ID ('TPatients')          IS NOT NULL DROP TABLE TPatients
IF OBJECT_ID ('TDoctors')           IS NOT NULL DROP TABLE TDoctors
IF OBJECT_ID ('TNurses')            IS NOT NULL DROP TABLE TNurses

-- --------------------------------------------------------------------------------
--  Step #1 : Create table 
-- --------------------------------------------------------------------------------
CREATE TABLE TDoctors
(
    intDoctorID         INTEGER         NOT NULL
   ,strFirstName        VARCHAR(25)     NOT NULL
   ,strLastName         VARCHAR(25)     NOT NULL
   ,strEmail            VARCHAR(25)     NOT NULL
   ,strPhone            VARCHAR(25)     NOT NULL
   ,strAddress          VARCHAR(25)     NOT NULL
   ,dtmHireDate         DATETIME        NOT NULL
   ,dtmTerminationDate  DATETIME        NULL
   ,dtmPassedBoardDate  DATETIME        NOT NULL
   CONSTRAINT TDoctors_PK PRIMARY KEY ( intDoctorID )
)

CREATE TABLE TNurses
(
    intNurseID          INTEGER         NOT NULL
   ,strFirstName        VARCHAR(25)     NOT NULL
   ,strLastName         VARCHAR(25)     NOT NULL
   ,strEmail            VARCHAR(25)     NOT NULL
   ,strPhone            VARCHAR(25)     NOT NULL
   ,strAddress          VARCHAR(25)     NOT NULL
   ,dtmHireDate         DATETIME        NOT NULL
   ,dtmTerminationDate  DATETIME        NULL
   ,dtmPassedBoardDate  DATETIME        NOT NULL
   CONSTRAINT TNurses_PK PRIMARY KEY ( intNurseID )
)

CREATE TABLE TPatients
(
    intPatientID        INTEGER         NOT NULL
   ,strFirstName        VARCHAR(25)     NOT NULL
   ,strLastName         VARCHAR(25)     NOT NULL
   ,dtmDateOfBirth      DATETIME        NOT NULL
   ,strEmail            VARCHAR(25)     NOT NULL
   ,strPhone            VARCHAR(25)     NOT NULL
   ,strAddress          VARCHAR(25)     NOT NULL
   ,strZipCode          VARCHAR(25)     NOT NULL
   ,strSSN              VARCHAR(25)     NOT NULL
   ,strInsuranceCompany VARCHAR(25)     NOT NULL
   ,strEmergFirstName   VARCHAR(25)     NOT NULL
   ,strEmergLastName    VARCHAR(25)     NOT NULL
   ,strEmergPhone       VARCHAR(25)     NOT NULL
   CONSTRAINT TPatients PRIMARY KEY ( intPatientID )
)

CREATE TABLE TAppointments
(
    intAppointmentID    INTEGER         NOT NULL
   ,dtmAppointmentDate  DATETIME        NOT NULL
   ,strReason           VARCHAR(50)     NOT NULL
   ,strDiagnosis        VARCHAR(25)     NOT NULL
   ,dtmFollowUpDate     DATETIME        NOT NULL
   ,intPatientID        INTEGER         NOT NULL
   ,intNurseID          INTEGER         NOT NULL
   ,intDoctorID         INTEGER         NOT NULL
   CONSTRAINT TAppointments PRIMARY KEY ( intAppointmentID )
)
1个回答

7
问题出在你给约束条件与表格取了相同的名字
给它们一个唯一的名字,例如使用"PK_Tpatients"作为主键的前缀。
请注意,表格和约束条件都是"对象",因此需要有唯一的名称。

2
我之前已经为其他表格做了这个,但不知道为什么没有为TPatients或TAppointments做。谢谢! - Thast16

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接