[英]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.