是否可以在修改 Oracle table 时同时添加列和约束?

Is adding a column and a constraint at the same time while modifying an Oracle table possible?

我有一项作业要求我向 table 添加一列并为其提供约束。

"Add a column named Base_Salary with a datatype of NUMBER(7,2) to the store_reps table. Ensure that the amount entered is above 0."

我认为这很简单,但也许我必须 ALTER table 两次,一次用于新列,一次用于添加约束?这似乎是多余且低效的。

我试过去掉第二个 'ADD' 并在括号周围移动,并移动逗号,似乎我所做的一切都有类似的错误。

这是我的尝试:

ALTER TABLE store_reps; 
 ADD (Base_Salary NUMBER(7, 2)),
 ADD CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0);

我收到一个错误

ADD CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0)
ERROR report - 
UNKNOWN COMMAND

还有一个:

Error starting at line : 74 in command -
ALTER TABLE store_reps 
 ADD (Base_Salary NUMBER(7, 2)),
 CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0)
Error report -

非常感谢任何帮助。我几周前才开始 SQL,非常菜鸟。

create table tr (col1 number);

alter table tr add col2 varchar2(100) constraint tr_cons CHECK (col2 = 'a');

DB Fiddle demo

干杯!!

您的查询包含两个需要修复的语法问题:

  • 去掉CONSTRAINT
  • 前的逗号
  • 去掉 Base_Salary NUMBER(7, 2)
  • 周围多余的一对大括号

工作示例:

create table store_reps (id number);

ALTER TABLE store_reps 
 ADD Base_Salary NUMBER(7, 2)
 CONSTRAINT store_reps_Base_Salary CHECK (Base_Salary>0);