ORACLE在修改主鍵時出現ORA-00955的解決方法

xypincle發表於2017-02-19

  1. ORACLE在修改主鍵時出現ORA-00955的解決方法

  2. ORA-00955:名稱已由現有物件使用

  3. Oracle建立複合主鍵

  4. 以藥庫的drug_stock表為例,需要在主鍵中增加一個欄位:PUTINSTORAGE_DATE
  5. 原來的主鍵名:PK_DRUG_STOCK,鍵值為:DRUG_CODE, DRUG_SPEC, FIRM_ID, PACKAGE_SPEC, BATCH_NO, STORAGE
  6. 修改後的主鍵名:PK_DRUG_STOCK,鍵值為:DRUG_CODE, DRUG_SPEC, FIRM_ID, PACKAGE_SPEC, BATCH_NO, STORAGE, PUTINSTORAGE_DATE

  7. --刪除主鍵

  8. ALTER TABLE PHARMACY.DRUG_STOCK DROP PK_DRUG_STOCK;

  9. --刪除主鍵索引

  10. drop index PHARMACY.DRUG_STOCK_I_2;
  11. drop index PHARMACY.DRUG_STOCK_I_3;

  12. --增加複合主鍵
  13. -- Create/Recreate primary, unique and foreign key constraints
  14. alter table PHARMACY.DRUG_STOCK
  15.   add constraint PK_DRUG_STOCK primary key (DRUG_CODE, DRUG_SPEC, FIRM_ID, PACKAGE_SPEC, BATCH_NO, STORAGE, PUTINSTORAGE_DATE)
  16.   using index
  17.   tablespace TSP_PHARMACY
  18.   pctfree 10
  19.   initrans 2
  20.   maxtrans 255
  21.   storage
  22.   (
  23.     initial 2M
  24.     next 1M
  25.     minextents 1
  26.     maxextents unlimited
  27.   );
  28.   
  29.  --建立索引
  30.  -- Create/Recreate indexes
  31. create index PHARMACY.DRUG_STOCK_I_2 on PHARMACY.DRUG_STOCK (DRUG_CODE, DRUG_SPEC)
  32.   tablespace TSP_PHARMACY
  33.   pctfree 10
  34.   initrans 2
  35.   maxtrans 255
  36.   storage
  37.   (
  38.     initial 640K
  39.     next 1M
  40.     minextents 1
  41.     maxextents unlimited
  42.   );
  43. create index PHARMACY.DRUG_STOCK_I_3 on PHARMACY.DRUG_STOCK (STORAGE)
  44.   tablespace TSP_PHARMACY
  45.   pctfree 10
  46.   initrans 2
  47.   maxtrans 255
  48.   storage
  49.   (
  50.     initial 64K
  51.     next 1M
  52.     minextents 1
  53.     maxextents unlimited
  54.   );

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2133887/,如需轉載,請註明出處,否則將追究法律責任。

相關文章