本文共 2306 字,大约阅读时间需要 7 分钟。
工作中用的数据库是Oracle,建表是说用复合主键,博主不是很懂啊(主键还有复合主键),才发现主键这块很是薄弱,查完资料,特写一篇博客记录一下。
什么是主键
主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
所谓的复合主键 就是指你表的主键含有一个以上的字段组成。 如果表里没有可以当唯一主键,可以使用复合主键,确定一条记录的唯一性。创建主键两种方式
第一种, 在创建表时定义主键
单列主键示例:----创建TF_B_AIR_CONFIG表create table ECS_STORE.TF_B_AIR_CONFIG( TYPE_ID VARCHAR2(20) not null, PROVINCE_CODE VARCHAR2(4) not null, PARAMETER_TYPE VARCHAR2(2) not null, LIMIT_NUM VARCHAR2(4) not null, EFFECTIVE_FALG VARCHAR2(2) default '1', UPDATE_TIME DATE default sysdate, constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID)--单列主键 )
复合主键示例:
----创建TF_B_AIR_CONFIG表create table ECS_STORE.TF_B_AIR_CONFIG( TYPE_ID VARCHAR2(20) not null, PROVINCE_CODE VARCHAR2(4) not null, PARAMETER_TYPE VARCHAR2(2) not null, LIMIT_NUM VARCHAR2(4) not null, EFFECTIVE_FALG VARCHAR2(2) default '1', UPDATE_TIME DATE default sysdate, constraint TF_B_AIR_CONFIG_PK primary key(TYPE_ID , PROVINCE_CODE)--复合主键 )
第二种, 在创建表后,使用alter table语法
语法
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2,...coln);
示例
----创建TF_B_AIR_CONFIG表create table ECS_STORE.TF_B_AIR_CONFIG( TYPE_ID VARCHAR2(20) not null, PROVINCE_CODE VARCHAR2(4) not null, PARAMETER_TYPE VARCHAR2(2) not null, LIMIT_NUM VARCHAR2(4) not null, EFFECTIVE_FALG VARCHAR2(2) default '1', UPDATE_TIME DATE default sysdate)
--单列主键 alter table ECS_STORE.TF_B_AIR_CONFIG add constraint TF_B_AIR_CONFIG_PK primary key (TYPE_ID); --联合主键 alter table ECS_STORE.TF_B_AIR_CONFIG add constraint TF_B_AIR_CONFIG_PK primary key (TYPE_ID , PROVINCE_CODE);
其他操作
禁用主键
语法:ALTER TABLE table_name DISABLE CONSTRAINT constraint_name;
示例:
alter table ECS_STORE.TF_B_AIR_CONFIG disable constraint TF_B_AIR_CONFIG_PK ;
启用主键
语法:ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;
示例:
alter table ECS_STORE.TF_B_AIR_CONFIG enable constraint TF_B_AIR_CONFIG_PK ;
删除主键
ALTER TABLE table_name DROP CONSTRAINT constraint_name;alter table ECS_STORE.TF_B_AIR_CONFIG drop constraint TF_B_AIR_CONFIG_PK ;