"已有一个名为'作者'在数据库中。"

时间:2016-10-31 23:50:02

标签: sql sql-server

我在Sql Power Architect中创建了以下关系图(因为我被告知要在学校做)。本课程中介绍的下一步是使用Forward Engineer获取脚本并使用新Query将其粘贴到Sql Management Server中。我得到这个错误"已有一个名为'作者'在数据库中。"我不知道它的含义或应该如何纠正。如果我没有错误执行,我就无法进入课程的后续步骤。 (我读过以前提出的问题,但我不确定答案是否适用于我的剧本。)

CREATE TABLE Author (
                Author_ID INT NOT NULL,
                Author_Name VARCHAR(50) NOT NULL,
                CONSTRAINT Author_ID PRIMARY KEY (Author_ID)
)

CREATE TABLE Publisher (
                Publisher_ID INT NOT NULL,
                Publisher_Name VARCHAR(80) NOT NULL,
                Address VARCHAR(100),
                CONSTRAINT Publisher_ID PRIMARY KEY (Publisher_ID)
)
CREATE UNIQUE  NONCLUSTERED INDEX Publisher_idx
 ON Publisher
 ( Publisher_ID )


CREATE TABLE Book (
                ISBN CHAR(13) NOT NULL,
                Title VARCHAR(128) NOT NULL,
                Price REAL NOT NULL,
                DateAdded DATETIME,
                Pages INT,
                DescriptionSummary TEXT,
                Publisher_ID INT NOT NULL,
                Author_ID INT NOT NULL,
                CONSTRAINT ISBN PRIMARY KEY (ISBN)
)
CREATE UNIQUE  NONCLUSTERED INDEX Book_idx
 ON Book
 ( Title )

CREATE UNIQUE  CLUSTERED INDEX Book_idx11
 ON Book
 ( ISBN )

CREATE UNIQUE  CLUSTERED INDEX Book_idx2
 ON Book
 ( ISBN )

CREATE UNIQUE  CLUSTERED INDEX Book_idx3
 ON Book
 ( ISBN )


CREATE TABLE Book_Genre (
                ISBN CHAR(13) NOT NULL,
                Genre_ID_sq_1 INT NOT NULL,
                CONSTRAINT ISBN PRIMARY KEY (ISBN, Genre_ID_sq_1)
)

CREATE TABLE Genre (
                Genre_ID INT NOT NULL,
                ISBN CHAR(13) NOT NULL,
                Genre VARCHAR(44) NOT NULL,
                CONSTRAINT ID PRIMARY KEY (Genre_ID, ISBN)
)
CREATE UNIQUE  NONCLUSTERED INDEX Genre_idx
 ON Genre
 ( Genre_ID )


ALTER TABLE Book ADD CONSTRAINT Author_Book_fk
FOREIGN KEY (Author_ID)
REFERENCES Author (Author_ID)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE Book ADD CONSTRAINT Publisher_Book_fk
FOREIGN KEY (Publisher_ID)
REFERENCES Publisher (Publisher_ID)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE Book_Genre ADD CONSTRAINT Book_Book_Genre_fk
FOREIGN KEY (ISBN)
REFERENCES Book (ISBN)
ON DELETE NO ACTION
ON UPDATE NO ACTION

ALTER TABLE Genre ADD CONSTRAINT Book_Genre_Genre_fk
FOREIGN KEY (ISBN, Genre_ID)
REFERENCES Book_Genre (ISBN, Genre_ID_sq_1)
ON DELETE NO ACTION
ON UPDATE NO ACTION

enter image description here

1 个答案:

答案 0 :(得分:2)

这意味着您已经创建了作者表。现在你可以改变它或者删除它。如果您使用的是Microsoft SQL Server Management工作室,则可以右键单击表格 - >选择脚本表为 - > DROP和CREATE Table to - >新的查询编辑器窗口。这将创建用于删除表并创建新表的sql代码。与下面的代码相同。

DROP TABLE [dbo].[Author]
GO

CREATE TABLE Author (
            Author_ID INT NOT NULL,
            Author_Name VARCHAR(50) NOT NULL,
            CONSTRAINT Author_ID PRIMARY KEY (Author_ID)
)
GO

但是,如果删除表,则会丢失Author表中的数据。如果您对自己没有足够的信心,可以将它在Management Studio中重命名为Author1。您还可以通过使用名为sp_depends的存储过程来查看正在使用您的表的其他内容。

sp_depends Author;

它会告诉你还需要表作者才能正常运行。您也可以尝试将其与其他东西一起使用,而不仅仅是表格。这是一个有用的小东西,可以确保在放弃之前不会造成太多问题。