SQL 错误:数据库中已存在名为“TPatients”的对象

Tha*_*t16 3 sql sql-server create-table drop-table

我似乎无法弄清楚为什么会出现以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

下面是我的 Drop Table 和 Create Table 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 )
)
Run Code Online (Sandbox Code Playgroud)

Stu*_*Stu 7

问题是因为您为约束指定了与表相同的名称。

给它们一个唯一的名称,例如,如果它是主键,则添加前缀“PK_T患者”。

请注意,表和约束都是“对象”,因此需要唯一的名称。

  • 呃,我对其他表这样做了,但由于某种原因没有对 TPatients 或 TAppointments 这样做。谢谢你!!! (2认同)