回答

收藏

如何在SQL中从复合主键迁移到单个属性键?

技术问答 技术问答 284 人阅读 | 0 人回复 | 2023-09-12

我想把使用复合主键的表迁移到唯一的主键。
3 c/ v6 M9 L# I! i我的表如下:/ t. d+ s; b! Q1 N# g) Z5 `
        CREATE TABLE REGM   LNG_CD VARCHAR2(2 BYTE) NOT NULL ENABLE,    REG_NRI NUMBER(10,0) NOT NULL ENABLE,    ...           CONSTRAINT PK_REGM PRIMARY KEY (LNG_CD,REG_NRI) ENABLE,  );表REGM使用LNG_CD和REG_NRI作为组合的主键。我想改用主键名称REGM_PK,但仍使用LNG_CD和REG_NRI作为外键。
8 O; y7 i) Z$ |5 R到目前为止,这是我的方法:
; u; F) [  E8 U) v1-放下约束. q5 O* M/ ?* P" F( n) u$ s9 e
ALTER TABLE REGM DROP CONSTRAINT PK_REGM;2-添加主键列# ]7 U! l1 p* ?2 Q2 n
ALTER TABLE REGM ADD REGM_PK NUMBER(19,0);3-创建序列2 A. L/ _- G' y( M: w5 z0 v' \
CREATE SEQUENCE REGM_SEQ  MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 2 CACHE 20 NOORDER  NOCYCLE ;4-按顺序填充列' B$ e, K% t9 |1 B" R2 _
5-使REGM_PK列不为空
+ I! f2 ?& z$ [' b6-创建关键约束7 m# T1 |' \# e! {
到目前为止,我在第四步被阻止了( F! {$ b5 X6 H! ^1 e' x
我知道我也可以创建/复制日期/删除表。但我宁愿这样做SQL操作方式。
& W& c( V2 Q1 g3 I! D' T& K7 K                                                                ! Q, n% N7 N1 `5 h' h/ f. G
    解决方案:                                                                  U" M. m+ ~( h9 X% t8 ]! N! m7 X: P
                                                                第4步:
; y# S; L, T' E9 W" O, [+ y. O" IUPDATE  regmSET     regm_pk = REGM_SEQ.nextval
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则