tak*_*sIV 7 oracle constraints foreign-keys unique
是否可以将唯一约束设置为另一个表中的外键?如果是的话,你会如何宣布它?
你会如何分配候选人钥匙?可能吗?
示例:我有一个产品表,其中包括:
prod_id, prod_name, prod_price, QOH
Run Code Online (Sandbox Code Playgroud)
我希望prod_name链接到发送表:
desp_id, prod_name, shelfLoc, quantity
Run Code Online (Sandbox Code Playgroud)
我在想的是我可能需要创建一个如下所示的唯一约束:
ALTER TABLE product
ADD CONSTRAINT prod_nameID_uc
UNIQUE (prod_id,prod_name)
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否可以在发货表中将唯一密钥称为外键.我必须prod_name而不是prod_id在发货表中,以便信息在阅读时对用户更有意义,而不是看到ID号.我在oracle上使用iSQL plus.
完全可以在Oracle FOREIGN KEY中引用UNIQUE约束:
SQL> create table products (
2 prod_id number not null
3 , prod_name varchar2 (30) not null
4 , constraint prod_pk primary key ( prod_id )
5 , constraint prod_uk unique ( prod_name )
6 )
7 /
Table created.
SQL> create table despatch (
2 desp_id number not null
3 , prod_name
4 , constraint desp_pk primary key ( desp_id )
5 , constraint desp_prod_pk foreign key ( prod_name )
6 references products ( prod_name )
7 )
8 /
Table created.
SQL>
Run Code Online (Sandbox Code Playgroud)
然而,这是不好的做法.使用主键和唯一键的主要原因是提供用于外键的合成键.我是你,我会担心你的老师会给你一个充满不良习惯的作业.