簡體   English   中英

Oracle SQL - 將主鍵添加到表

[英]Oracle SQL - Add Primary Key to table

我有一些沒有主鍵的列,並且想要添加主鍵列

NAME    Age
-------------
Peter   45
Bob     25
John    56
Peter   45

一些同事建議添加帶有序列和觸發器的PK在oracle中向現有表添加自動增量主鍵

這很好,但我的客戶使用數據庫用戶無權添加序列或觸發器 我想阻止與數十名DBA管理員聯系以更改用戶權限或運行我的腳本。

這是我建議添加一個只有更新語句的PK :(我在步驟2中需要幫助)

第1步:創建ID列( 我有此權限

ALTER TABLE PERSON ADD ID NUMBER(10,0);

第2步: 問題:我可以根據行的順序或其他內容使用唯一值初始化ID列嗎? 怎么樣?

UPDATE PERSON SET ID = something-unique

第3步:在詞語后添加主鍵約束:( 我有權使用此權限

ALTER TABLE PERSON ADD CONSTRAINT PK_ID PRIMARY KEY(ID);

第4步:后記:主鍵由我的應用程序管理和添加。

這將是結果:

ID(PK)  NAME    Age
---------------------
1       Peter   45
2       Bob     25
3       John    56
4       Peter   45

謝謝大家!

Update person set id = rownum;

這個想法很幼稚,但如果你的表沒有大量的行,應該可以正常工作。

對於第2步,運行for循環,如:

declare
    i pls_integer :=1;
     begin
    for rec in (select name,age, rowid from table_name)
    loop
    update table_name set id = i 
    where 
     table_name.name=rec.name 
     and table_name.age=rec.age 
     and table_name.rowid = rec.rowid;
    i:=i+1;
    end loop;
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM