在Oracle数据库中创建一个表,用两个键做联合主键,sql语句该怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Oracle数据库中创建一个表,用两个键做联合主键,sql语句该怎么写?相关的知识,希望对你有一定的参考价值。

这两个键独立不唯一,组合唯一

create table 表名(
a ...,
b...,
...
constraint 约束名 primary key(a,b)
);

如果是已建完表则 去添加 alter table table_name add constraint 约束名 primary key(a,b);
参考技术A 在定义表的时候,字段只定义好数据类型和长度就行,在最后加上约束就行了,类似:constraint pk_1 primary key(*,*) 参考技术B ALTER TABLE 表名 ADD (
CONSTRAINT 约束名
PRIMARY KEY
(aa, bb))

oracle 表一的A、B两个字段是联合主键,表二使用表一的A字段作为外键,这样可以吗?

表二单独使用表一的A字段。

不可以。
从定义看,外键至少需要父表上A列/A字段是唯一的(UNIQUE约束),如果A、B字段作为联合主键,则不能保证A字段唯一性约束。有矛盾,所以不可以。
参考技术A oracle 表一的A、B两个字段是联合主键,
表二使用表一的A字段作为外键 没意义
参考技术B 数据库上不可以,但你自己的业务系统却可以这样。

以上是关于在Oracle数据库中创建一个表,用两个键做联合主键,sql语句该怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

sql中创建组合主键和组合外键

oracle 表一的A、B两个字段是联合主键,表二使用表一的A字段作为外键,这样可以吗?

如何在 Oracle 数据库中创建临时表?

从多个来源在 Oracle 中创建数据库表

怎样在oracle中创建主外键和唯一约束

如何在 Oracle 12c 中创建带条件的索引?