0

我正在尝试从 Oracle SQL Developer 中的其他 2 个表创建一个表:

CREATE TABLE share_stock(
  share_id    NUMBER(6,0), 
  share_price NUMBER(10,2),
  company_id  NUMBER(6,0), 
  company_name VARCHAR2(50), 
  ticker_symbol VARCHAR2(4),
AS SELECT share_price.share_price_id, share_price.price, share_price.company_id, company.name, company.ticker_symbol 
FROM share_price, company
WHERE share_price.company_id = company.company_id,
CONSTRAINT sh_pk PRIMARY KEY (share_price.share_price_id),
CONSTRAINT sh_pr_fk FOREIGN KEY (share_price.share_price_id) REFERENCES share_price(share_price_id)
);

基本上我正在尝试执行 CREATE AS SELECT,但我收到此错误:

命令行错误:294 列:28 错误报告:SQL 错误:ORA-00904::无效标识符 00904。00000 -“%s:无效标识符”

我试图纠正我的语法,但到目前为止我还没有做到正确,任何想法都会有所帮助,

提前致谢。

4

2 回答 2

4

试试这个方法:

CREATE TABLE share_stock
AS 
SELECT SP.share_price_id as share_id , 
       SP.price as share_price, SP.company_id, C.name, 
       C.ticker_symbol 
FROM share_price SP 
join company C on SP.company_id = C.company_id;

alter table share_stock
add CONSTRAINT sh_pk PRIMARY KEY (share_id);

alter table share_stock
add CONSTRAINT sh_pr_fk FOREIGN KEY (share_id) 
REFERENCES share_price(share_price_id);
于 2013-01-17T14:19:06.317 回答
0

约束 sh_pk 主键 ( share_price.share_price_id ),约束 sh_pr_fk 外键 (**share_price.**share_price_id) 参考 share_price(share_price_id));

您的代码不起作用,因为 ORACLE 不知道 share_price.shareprice_id 是什么???您应该编写 share_id,即您希望成为表 share_stock 的主键的列。

亲切的问候,MJ。

于 2013-10-12T09:36:39.090 回答