0

当我尝试执行我的 TSQL 代码时,我得到了异常:

Msg 2714, Level 16, State 6, Line 2
There is already an object named 'Role' in the database.
Msg 2714, Level 16, State 6, Line 2
There is already an object named 'User' in the database.  

但我没有任何数据库。我需要建议。

代码如下所示:

USE master
GO
CREATE DATABASE PortalDB
GO

CREATE TABLE [Role]
(
    [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
    [Name] NVARCHAR(50) NOT NULL,
)
GO

CREATE TABLE [User]
(
    [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
    [Name] NVARCHAR(50) NOT NULL,
    [UserName] NVARCHAR(50) NOT NULL,
    [Password] NVARCHAR (100) NOT NULL,
    [Email] NVARCHAR (100) NOT NULL,
    [RoleID] INT NOT NULL FOREIGN KEY REFERENCES [Role](ID)
)
4

4 回答 4

4

不是说有表,是说有对象,你选择了两个保留字作为表名,这并不理想,但它们是现有对象的名称。您应该选择其他名称。

从技术上讲,您可以像这样创建一个用户表:

CREATE TABLE dbo.[user]

但是你不应该使用保留字作为表名。此外,请确保在创建表时使用正确的数据库。创建数据库后,您可以使用:

USE PortalDB
GO

或者您可以指定CREATE TABLE如下:

CREATE TABLE PortalDB.dbo.[tablename]
于 2013-07-20T14:29:31.107 回答
1

1)这个脚本的主要问题是它试图在数据库中创建两个表([Role][User]) 。master发生这种情况是因为在CREATE DATABASE PortalDB当前连接的活动数据库之后仍然是数据库master。你能做什么 ?在CREATE DATABASE PortalDB您必须更改活动数据库以与另一个当前连接USE

USE master
GO
CREATE DATABASE PortalDB
GO
SELECT DB_NAME() AS CurrentDBBefore;
USE PortalDB; -- <- this statement will change active DB
SELECT DB_NAME() AS CurrentDBAfter;
GO
CREATE TABLE [dbo].[Role]...

2)当您必须使用表名时,请同时使用模式名称:

CREATE TABLE [MySchema].[MyTable]...

例子:

CREATE TABLE [dbo].[Role]...
于 2013-07-20T15:11:43.640 回答
0

问题已解决。谢谢你。工作sql代码如下所示:

USE master
GO
CREATE DATABASE FancyDB
GO

    CREATE TABLE FancyDB..[Role]
    (
        [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
        [Name] NVARCHAR(50) NOT NULL,
    )
GO

    CREATE TABLE FancyDB..[User]
    (
        [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
        [Name] NVARCHAR(50) NOT NULL,
        [UserName] NVARCHAR(50) NOT NULL,
        [Password] NVARCHAR (100) NOT NULL,
        [Email] NVARCHAR (100) NOT NULL,
        [RoleID] INT NOT NULL FOREIGN KEY REFERENCES [Role](ID)
    )
于 2013-07-20T14:41:33.797 回答
0

为什么要在 Master 中创建对象?它是一个系统数据库。

于 2013-07-20T21:27:46.947 回答