Avi*_*Avi 2 sql database oracle
我在 Oracle 中有一个名为“User”的表,我使用以下命令将其重命名为“Account”。这是成功的。
RENAME User TO Account
Run Code Online (Sandbox Code Playgroud)
然后我想用不同的列创建一个名为“用户”的新表。我尝试了以下命令,
CREATE TABLE User(
    user_id    NUMBER(38, 0)    NOT NULL,
    user_name  VARCHAR2(25)     NOT NULL,
    CONSTRAINT PK_User PRIMARY KEY (user_id)
)
;
Run Code Online (Sandbox Code Playgroud)
但是 Oracle 不允许我这样做。我收到以下错误,
Error starting at line : 1 in command -
CREATE TABLE User(
    user_id    NUMBER(38, 0)    NOT NULL,
    user_name  VARCHAR2(25)     NOT NULL,
    CONSTRAINT PK_User PRIMARY KEY (user_id)
)
Error report -
SQL Error: ORA-00955: name is already used by an existing object
00955. 00000 -  "name is already used by an existing object"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?重命名表以清除某些缓存等后,我是否需要运行任何其他命令?
编辑:
重命名表后约束重命名成功
ALTER TABLE Account RENAME CONSTRAINT PK_User TO PK_Account
Run Code Online (Sandbox Code Playgroud)
注意:表名“帐户”和“用户”仅用于示例目的。我知道“用户”是一个保留关键字。
这是因为您的主键名称已被占用。你应该重命名它:
ALTER INDEX "PK_User" RENAME TO "PK_Account_User";
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令检查哪些名称已被使用:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
Run Code Online (Sandbox Code Playgroud)