我在Oracle中有一个名为“User”的表 我使用下面的命令将其重命名为“帐户”。这很成功。
RENAME User TO Account
然后我想创建一个名为'User'的新表,其中包含不同的列。我尝试了以下命令,
CREATE TABLE User(
user_id NUMBER(38, 0) NOT NULL,
user_name VARCHAR2(25) NOT NULL,
CONSTRAINT PK_User PRIMARY KEY (user_id)
)
;
但甲骨文不允许我这样做。我收到以下错误,
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:
可能是什么问题?在重命名表以清除某些缓存等之后,是否需要运行任何其他命令。
修改
重命名表
后成功重命名了约束ALTER TABLE Account RENAME CONSTRAINT PK_User TO PK_Account
注意:表名“帐户”和“用户”仅用于示例目的。我理解“用户”是保留的关键字。
答案 0 :(得分:4)
这是因为您的主键名已被占用。你应该重命名它:
ALTER INDEX "PK_User" RENAME TO "PK_Account_User";
您可以使用以下命令检查已经使用的名称:
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='<table_name>';
答案 1 :(得分:0)
用户是保留字。
KLRICE@xe >CREATE TABLE User(
2 user_id NUMBER(38, 0) NOT NULL,
3 user_name VARCHAR2(25) NOT NULL,
4 CONSTRAINT PK_User PRIMARY KEY (user_id)
5 );
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 -
ORA-00903: invalid table name
使用前缀或其他字
1 CREATE TABLE my_user (
2 user_id NUMBER(38, 0) NOT NULL,
3 user_name VARCHAR2(25) NOT NULL,
4 CONSTRAINT PK_User PRIMARY KEY (user_id)
5* );
KLRICE@xe >/
Table MY_USER created.
KLRICE@xe >
答案 2 :(得分:0)
您应该重命名主键。
CREATE TABLE User(
user_id NUMBER(38, 0) NOT NULL,
user_name VARCHAR2(25) NOT NULL,
CONSTRAINT PK_User_id PRIMARY KEY (user_id)
);
答案 3 :(得分:0)
如果Oracle告诉您:&#34;现有对象已经使用了名称&#34;然后找出具有该名称的对象。
select owner,object_type
from all_objects where
object_name='<NAME_OF_OBJECT>'