我正在使用 Oracle 数据库(版本为 9i),我想在 oracle 数据库中的当前表中添加一列。
我想添加一个整数列来跟踪每个用户的无效尝试,所以默认值应该是 5。
当我尝试在 Sql*Plus 中执行此查询时,它会给出错误表或视图不存在(我已仔细检查表名是否正确。
ALTER TABLE CustApps_user ADD VALID_TRIES INT DEFAULT 5 NOT NULL;
我猜你得到的错误是 ORA-00942。这可能意味着很多事情,但基本上它意味着该对象不存在于您正在执行的当前范围和上下文中。因此,例如,当我们通过角色而不是直接授予权限时,当我们尝试在另一个模式中的表上构建视图时,就会引发错误。
在您的情况下,这可能意味着该表位于另一个模式中。您通常可以通过视图或同义词访问它。您可以通过查询数据字典轻松检查这一点:
select owner, object_type
from all_objects
where object_name = 'CUSTAPPS_USER'
alter table
table_name
add
(
column1_name column1_datatype column1_constraint,
column2_name column2_datatype column2_constraint,
column3_name column3_datatype column3_constraint
);
下面是一些用于添加数据列的 Oracle“更改表”语法示例。
alter table
cust_table
add
cust_sex varchar2(1) NOT NULL;
下面是添加多个数据列的 Oracle “alter table”语法示例。
ALTER TABLE
cust_table
ADD
(
cust_sex char(1) NOT NULL,
cust_credit_rating number
);
您必须在查询中添加括号:
ALTER TABLE CustApps_user ADD (VALID_TRIES INT DEFAULT 5 NOT NULL);
INT 是合法的,但是会被转换成 NUMBER,所以你也可以使用:
ALTER TABLE CustApps_user ADD (VALID_TRIES NUMBER(38,0) DEFAULT 5 NOT NULL);
或更改(降低)NUMBER 精度。