如何给表增加外键?

TechnoFantasy 2002-03-28 03:18:33
我要将cscustom表中的custtypeid设定为cscusttype表custtypeid的外键,应该如何设定,下面的语句:
ALTER TABLE CSCUSTOM ADD FOREIGN KEY (CustTypeID) REFERENCES CSCUSTTYPE(CustTypeID)
为什么提示:
ERROR 位于第 1 行:
ORA-02298: 无法验证 (SCOTT.SYS_C002035) - 未找到父项关键字
...全文
735 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
topson_fj 2002-03-28
  • 打赏
  • 举报
回复
假定有两个表TEST_1、TEST_2,表结构如下:
SQL> DESC TEST_1
名称 空? 类型
----------------------------------------- -------- --------------
ID NOT NULL NUMBER(8)
NAME VARCHAR2(8)
BIRTHDAY DATE

SQL> DESC TEST_2;
名称 空? 类型
----------------------------------------- -------- ------------
ID NUMBER(8)
NAME VARCHAR2(8)

1)确保TEST_1中要作为外键的ID非空 ----(该要可以作为主键才成)
2)将TEST_1中要作为外键的ID设成主键
3)执行下列语句即可:
ALTER TABLE TEST."TEST_2" ADD ( CONSTRAINT TEST_F_1 FOREIGN KEY
("ID") REFERENCES TEST."TEST_1");

说明:
1)上面TEST_1、TEST_2是建在TEST用户下的,所以前面会有TEST字样
2)所建的外键名称为TEST_F_1
dragonhe 2002-03-28
  • 打赏
  • 举报
回复

如下列例子:

drop table yours_product_category cascade constraints
/
drop table yours_bargain cascade constraints
/
create table yours_product_category (
site VARCHAR2(32) not null,
id NUMBER not null,
gmt_create DATE not null,
gmt_modified DATE not null,
owner VARCHAR2(128) not null,
modifier VARCHAR2(128) not null,
is_deleted CHAR(1) not null,
category_code VARCHAR2(256) not null,
category_name VARCHAR2(128) not null,
remark BLOB,
constraint PK_YOURS_PRODUCT_CATEGORY primary key (id)
)
/

create table yours_bargain (
site VARCHAR2(32) not null,
id NUMBER not null,
gmt_create DATE not null,
gmt_modified DATE not null,
owner VARCHAR2(128) not null,
modifier VARCHAR2(128) not null,
is_deleted CHAR(1) not null,
customer_name VARCHAR2(256) not null,
category_id NUMBER not null,
supplier_level VARCHAR2(4) not null,
style VARCHAR2(4) not null,
bargain_date DATE,
end_date DATE,
service_month NUMBER,
total_month NUMBER,
bargain_price NUMBER(14,3),
remark BLOB,
reserve1 VARCHAR2(256),
reserve2 VARCHAR2(256),
constraint PK_YOURS_BARGAIN primary key (id),
constraint FK_BARGAIN_PRODUCT foreign key (category_id)
references yours_product_category (id)
)
/

如上,cscustom对应yours_bargain表,cscusttype对应yours_product_category表
cscustom.custtypeid对应yours_bargain.category_id;
cscusttype.custtypeid对应yours_product_category.id
必须注意的是:cscusttype.custtypeid必须是主键或唯一键
然后执行上述sql语句就ok了。
也可以把sql语句写到一个.sql文件中去,在sqlPlus中执行下列命令:@yoursqlfile,就可以创建外键成功了。
sbm 2002-03-28
  • 打赏
  • 举报
回复
Add/drop Foreign Key Constraint:

Syntax:

ALTER TABLE table_name ADD(CONSTRAINT[constraint_name]
FOREIGN KEY (col1,col2,...col16) REFERENCES table_name (col1,
col2,...col16) [ON DELETE CASCADE]);
tiangou 2002-03-28
  • 打赏
  • 举报
回复
ALTER TABLE CSCUSTTYPE ADD PRIMARY KEY (CUSTTYPEID)
trunc 2002-03-28
  • 打赏
  • 举报
回复
保证cscusttype表CustTypeID是主键或唯一键才可以
jornk 2002-03-28
  • 打赏
  • 举报
回复
ALTER TABLE CSCUSTOM ADD constraint fkname FOREIGN KEY (CustTypeID) REFERENCES CSCUSTTYPE (CustTypeID)
当然你得保证CSCUSTTYPE 主键为CustTypeID

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧